定义了两个类..
class Dictionary
{
public:
Dictionary();
Dictionary(int i);
// ...
};
和
class Equation
{
static Dictionary operator_list(1);
// ...
};
但问题是,每当我编译它时,我都会收到一条奇怪的错误消息
error C2059: syntax error : 'constant'
但是当我在 operator_list 上使用默认构造函数时它编译得很好。
最佳答案
在 C++ 中,您不能将声明和初始化结合起来。当您不指定operator_list
的构造函数参数时,您不会调用它的默认构造函数:您只需声明它。您还需要在相应的 C++ 文件中对其进行初始化,如下所示:
方程.h
class Equation {
static Dictionary operator_list;
};
方程式.cpp:
Dictionary Equation::operator_list(1);
请注意 CPP 文件中没有 static
:它不是设计使然。编译器已经从声明中知道 operator_list
是静态的。
编辑:您可以选择整型和枚举类型的静态常量成员:您可以像上面的示例一样在 CPP 文件中初始化它们,或者您可以在 header 中给它们赋值。您仍然需要在 C++ 文件中定义该成员,但您不能在定义时为其赋值。
关于c++ - 初始化静态变量时出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461546/