1

我是 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:函数 _main C:\drives\Comp-Mech\programming\VS 中引用的未解析外部符号“public: __thiscall bob::bob(double,double)”(??0bob@@QAE@NN@Z) \C++\projects\E1\E1.obj E1

4

3 回答 3

5

您需要实现类 bob 的构造函数:

 bob::bob(double a,double b) : a(a), b(b) {}
于 2013-05-01T12:34:50.770 回答
3

您已为 的构造函数提供了声明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初始化成员。它还避免了在分配给成员之前对成员进行潜在昂贵的默认初始化。bb

于 2013-05-01T12:35:57.157 回答
1

那是因为你还没有为bob::bob(double, double).

struct bob
{
   double a,b;      
   bob(double aa, double bb) a(aa), b(bb) {}
};
于 2013-05-01T12:35:31.053 回答