C++ 嵌套类初始化列表问题
尝试编译时,我得到: 错误:隐式声明的“Foo::FooBar::FooBar()”的定义。C++ 嵌套类初始化列表问题,c++,C++,尝试编译时,我得到: 错误:隐式声明的“Foo::FooBar::FooBar()”的定义。 我敢肯定,这是一个愚蠢的、简单的、与作用域相关的错误,但我似乎看不出它是什么…您试图实现一个未声明的构造函数。声明如下: //header file class Foo { public: struct FooBar { bool ok; string msg; }; }; // .cpp file Foo::FooBar::FooBar():ok(false
我敢肯定,这是一个愚蠢的、简单的、与作用域相关的错误,但我似乎看不出它是什么…您试图实现一个未声明的构造函数。声明如下:
//header file
class Foo
{
public:
struct FooBar {
bool ok;
string msg;
};
};
// .cpp file
Foo::FooBar::FooBar():ok(false), msg("hello")
{}
您需要声明构造函数,即
//header file
class Foo
{
public:
struct FooBar {
FooBar();
bool ok;
string msg;
};
};
// .cpp file
Foo::FooBar::FooBar():ok(false), msg("hello")
{}
class-Foo
{
公众:
结构FooBar{
FooBar()当您省略类的构造函数声明时,编译器将创建一个隐式构造函数定义。在这种情况下,您定义了默认构造函数,但没有声明它,因此编译器对正在发生的事情感到困惑。因此,它抱怨您定义了隐式定义的默认构造函数
解决方案是声明默认构造函数,以便它知道如何使用默认构造函数定义
class Foo
{
public:
struct FooBar {
FooBar(); // <-- needed
bool ok;
string msg;
};
};