尝试执行此操作时出现此错误:
#include <iostream>
using namespace std;
struct VertexStatus
{
private:
int _CurrentStatus;
public:
static VertexStatus Discovered = new VertexStatus(1); //incomplete type is not allowed
VertexStatus(int iStatus)
{
this->_CurrentStatus = iStatus;
}
};
有什么不对吗?
答案 0 :(得分:7)
将初始化移出类体:
struct VertexStatus
{
...
static VertexStatus Discovered; // declaration
...
};
VertexStatus VertexStatus::Discovered(1); // definition (with initializer)
如果在头文件中声明了类,则将最后一行(定义)放入相应的.cpp
文件中。
请注意,我已删除new
:它返回一个指针,此代码中没有指针。
答案 1 :(得分:-2)
VertexStatus
的大小在完全声明之后才知道,但它没有在其自己的定义中。
而是在声明后初始化静态变量,如下所示:
struct VertexStatus {
static VertexStatus Discovered;
// ... other stuff
};
VertexStatus::Discovered = new VertexStatus(1);
如果这是在头文件中,你需要将最后一行放在相应的.cpp文件中。