c++中结构初始化错误

struct initialization in c++ error

本文关键字:错误 初始化 结构 c++      更新时间:2023-10-16

我是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:drivesComp-MechprogrammingV.S c++ projectsE1E1。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) {}
};