vendor/mediatek/proprietary/hardware/libhwcomposer/2.0.0/hwc2.cpp:64:19: error: non-static data member defined out-of-line
时间: 2024-09-24 14:21:51 浏览: 86
这个错误在C++编译过程中通常发生在试图定义非静态成员(即不属于类的静态部分,而属于类的每个实例的部分)的时候,位置却不在其声明的位置。在这个例子中,`hwc2.cpp:64:19`表示在`hwc2.cpp`文件的第64行,有一个非静态数据成员被错误地放在了函数体之外的定义处。
在C++中,非静态数据成员(如变量、指针等)应该在它们所属的类的内部定义,而且通常应在构造函数中初始化。如果定义和初始化都放在函数外部,尤其是在头文件中,就会导致链接阶段找不到正确的定位,从而引发此错误。
修正的方法是将该数据成员及其初始化移到相应类的内部,如果是模板或者大型复杂的结构,可能需要在适当的地方提供成员的定义。
```cpp
// 类HWC2的正确形式
class HWC2 {
private:
int someNonStaticData; // 移到类内部并添加合适的初始化
public:
HWC2() : someNonStaticData(0) {} // 构造函数中初始化
//...
};
// 现在hwc2.cpp只需包含类声明即可
void someFunction() {
HWC2 hwc; // 创建HWC2对象,这时someNonStaticData会被正确初始化
}
```
阅读全文