keil错误#321: data member initializer is not allowed怎么解决
时间: 2024-09-09 20:04:07 浏览: 219
Keil错误#321通常发生在试图在数据成员初始化列表中对C++类的数据成员赋值时。C++标准规定,数据成员的初始值是在构造函数体内部设定的,而不是在类定义中直接指定。如果遇到这个错误,你可以尝试以下几种解决方案:
1. **移除初始化列表**:将原本放在初始化列表中的数据成员赋值移到构造函数的体内部,例如:
```cpp
class MyClass {
public:
MyClass(int value) : myData(value) {} // 将myData = value 移到这里
int myData;
};
```
2. **使用默认构造函数**:如果数据成员可以在默认状态下初始化,可以先定义一个无参构造函数:
```cpp
class MyClass {
public:
MyClass() : myData(0) {} // 使用默认值初始化
MyClass(int value) : myData(value) {}
int myData;
};
```
3. **使用成员初始化列表,仅设置部分属性**:若确实需要初始化列表,但又不想在这里赋值,可以分开处理:
```cpp
class MyClass {
public:
MyClass(int initialValue, int anotherValue)
: myInitialData(initialValue), myAnotherData(anotherValue) {}
int myInitialData, myAnotherData;
};
```
记得检查并确保所有必要的构造函数都已定义,并且与数据成员的需求匹配。
阅读全文