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 浏览: 106
这个错误是因为在类定义中对非常量静态成员变量 `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:60: error: redefinition of 'void barrier::updatePosition()' void barrier::updatePosition() ^
这个错误提示说明你在 `barrier.cpp` 文件中重复定义了 `barrier` 类的 `updatePosition` 函数。这通常是因为在同一个类中多次定义了同名的函数。
请检查 `barrier.cpp` 文件,确保只有一个 `updatePosition` 函数的定义。如果你在其他地方也定义了该函数,可以考虑删除重复的定义或者将其合并到一个函数定义中。
如果你的意图是在不同的地方实现不同的 `updatePosition` 函数,那么需要确保每个实现都有不同的函数名或者参数列表,以避免重复定义的错误。
阅读全文