[英]struct initialization in c++ error
我是C ++的新手,我在Visual Studio C ++中運行以下代碼
struct bob
{
double a,b;
bob(double a,double b);
}
int main()
{
bob z(2.2,5.6);
cout<<z.a<<endl;
keep_window_open();
return 0;
}
當我運行此代碼時,出現以下錯誤:
錯誤1錯誤LNK2019:未解析的外部符號“ public:__thiscall bob :: bob(double,double)”(?? 0bob @@ QAE @ NN @ Z)在函數_main C:\\ drives \\ Comp-Mech \\ programming \\ VS中引用\\ C ++ \\ projects \\ E1 \\ E1.obj E1
您需要實現類bob的構造函數:
bob::bob(double a,double b) : a(a), b(b) {}
您已經為bob
的構造函數提供了聲明,但尚未提供定義。 該定義給出了構造函數的實現,並確切說明了應該做什么。 在這種情況下,您可能希望構造函數將其參數分配給對象的成員變量:
bob::bob(double a, double b)
{
this->a = a;
this->b = b;
}
我在上面的代碼中使用了賦值,因為您更可能熟悉它。 但是,您應該知道成員初始化列表,這些列表使您可以直接初始化成員:
bob::bob(double a, double b)
: a(a), b(b)
{ }
這是說初始化成員a
與爭論a
和初始化成員b
的說法b
。 它還避免了在分配給成員之前潛在的昂貴的成員默認初始化。
這是因為您尚未編寫bob::bob(double, double)
。
struct bob
{
double a,b;
bob(double aa, double bb) a(aa), b(bb) {}
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.