大家好,最近在努力學習C++,但是遇見了一些問題,很希望懂的人士幫我解答下,這對於你們很簡單吧,嘿嘿,謝謝了
代碼如下:
#include<iostream>
using namespace std;
class Box{
public:
double length;
double heigth;
double width;
int d;
Box();
Box(double length1,double heigth1,double width1){
length=length1;
heigth=heigth1;
width=width1;
}
double volume(){
return length*heigth*width;
}
};//要有分號哦!
int main(){
Box firstBox(2.0,4.0,6.0);
firstBox.d=2;
cout<<endl
<<firstBox.length<<"\n"
<<firstBox.heigth<<"\n"
<<firstBox.width<<"\n"
<<firstBox.d
<<endl;
cout<<firstBox.volume();
Box smallBox;
smallBox.length=10.0;
smallBox.heigth=5.0;
smallBox.width=4.0;
cout<<endl;
cout<<smallBox.length<<"\n"
<<smallBox.heigth<<"\n"
<<smallBox.width<<"\n"
<<smallBox.volume()
<<endl;
return 0;
}
在Dev_C++5.6.1上編譯的,出現了如下:
C:\Users\ADMINI~1\AppData\Local\Temp\ccgxkOkf.o lei1.cpp:(.text+0x10f): undefined reference to `Box::Box()'
D:\Dev-Cpp\大二C\collect2.exe [Error] ld returned 1 exit status
我在百度上搜了很多,但很不理解,希望各位幫忙解答下。謝謝了
因為你編寫的Box smallBox;需要使用到無參構造函數,但是你已經提供了一個帶參數的構造函數,因此編譯器將不會為你提供無參構造函數,即默認構造函數,你只需在類定義加上Box(){},即顯式定義一個無參構造函數就可以了。
另外你原來代碼中有個Box(),這個只是聲明,沒有定義,但是你Box smallBox;這個需要使用這個函數,但連接器找不到這個函數的入口,因此也會報錯的。