c++ - 初始化静态变量时出现语法错误

标签 c++ static constructor compiler-errors

定义了两个类..

    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/

相关文章:

java - 如何从类 token 访问子类静态方法?

c++ - 对象数组的构造函数中的随机数

c++ - ConvertStringSecurityDescriptorToSecurityDescriptor() 阻止我的程序正常结束

c++ - 根据 MSVC++ 中的 unicode 设置自动在 std::string 和 std::wstring 之间切换?

java - 谁能准确解释为什么串行版本 ID 在 Java 中是静态的

未找到 jQuery : Uncaught ReferenceError: $ is not defined

c++ - 使用 Dbghelp.h 的函数列表

c++ - 关注点分离 : Create base library and remove dependencies on concrete classes

php - 为什么在调用父级的构造函数时会出现 fatal error ?

c++ - 如果抽象基类是一个接口(interface),是否必须在派生类构造函数中调用基类构造函数?