E:\bird\bird\bird\barrier.h:31: error: ISO C++ forbids in-class initialization of non-const static member 'barrier::score' public: static int score=0; ^
时间: 2024-04-16 17:26:24 浏览: 10
这个错误是因为在类定义中对非常量静态成员变量 `score` 进行了初始化。根据 ISO C++ 标准,非常量静态成员变量不能在类定义中进行初始化。
要解决这个问题,你可以将静态成员变量 `score` 的初始化从类定义中移动到类外部的源文件中。在源文件中,你可以使用类名加作用域解析运算符 `::` 来初始化静态成员变量。例如:
```cpp
// 在 barrier.cpp 或其他源文件中
int barrier::score = 0;
```
请确保在源文件中有类外部的静态成员变量的定义,并且不要在类定义中进行初始化。这样,你就可以解决这个编译错误。
相关问题
E:\bird\bird\bird\barrier.h:31: error: ISO C++ forbids in-class initialization of non-const static member 'barrier::score' static int score=0; ^
对不起,我之前的回答有误。根据错误消息提示,C++标准不允许在类定义中对非常量静态成员变量进行初始化。
要解决这个问题,你可以将静态成员变量的初始化移到类外部的源文件中。在源文件中,你可以使用类名加作用域解析运算符 `::` 来初始化静态成员变量。例如:
```cpp
// 在 barrier.cpp 或其他源文件中
int barrier::score = 0;
```
请确保在源文件中有类外部的静态成员变量的定义,并且不要在类定义中进行初始化。这样,你就可以解决这个编译错误。对于静态成员变量的初始化,只能在类外部的源文件中进行。非常抱歉之前的误导,希望这次能够帮到你。
E:\bird\bird\bird\barrier.cpp:41: error: undefined reference to `barrier::score'
根据错误消息 `undefined reference to 'barrier::score'`,编译器在 `barrier.cpp` 文件的第41行找不到 `barrier::score` 的定义。
确保你在 `barrier.cpp` 文件中正确定义了 `barrier` 类的静态成员变量 `score`。你可以在 `barrier.cpp` 文件中添加以下代码来定义该静态成员变量:
```cpp
int barrier::score = 0;
```
请注意,这个定义必须在类外部进行,而不能在类的内部或头文件中进行。
如果你已经在 `barrier.cpp` 文件中添加了这个定义,但问题仍然存在,请确保编译器正确地编译和链接了 `barrier.cpp` 文件。检查编译选项和链接命令,确保将 `barrier.cpp` 文件包含在编译过程中。
如果问题仍然存在,请提供更多的代码和编译选项,以便我们可以提供更具体的帮助。