簡體   English   中英

C ++中的結構初始化錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM