C++中怎么在类中定义一个结构?
刚开始看《thinking in C++》,其中书上有一段头文件代码是这样的:
头文件声明:
class Handle{
struct Cheshire;
Cheshire* smile;
}
在文件中定义Handle:
struct Handle::Cheshire{
int i;
};
我用VS2012敲上去之后,报错是“class Handle 没有名为"Cheshire"的标记成员”...
我想问一下这到底是什么原因?是不是跟VS编译器有关还是说语法不该这样写? c++ class struct 编译器
[解决办法]
#include <iostream>
using namespace std;
class Handle
{
struct Cheshire{int i;};
public:
Cheshire smile;
};
int main(int argc, char* argv[])
{
Handle* hd = new Handle();
hd->smile.i = 23;
cout << hd->smile.i << endl;
delete hd;
return 0;
}
[解决办法]
class Handle
{
struct Cheshire;
Cheshire* smile;
};
struct Handle::Cheshire
{
int i;
};