【发布时间】:2015-02-12 14:52:10
【问题描述】:
谁能解释一下为什么我的编译过程中会出现这些错误?
class ILI9341_due;
class LCD_ILI9341
{
private:
ILI9341_due *tLCD;
ILI9341_due &LCD = *tLCD;
public:
LCD_ILI9341();
~LCD_ILI9341();
void initDisplay();
void drawMenu();
};
错误是:
'LCD_ILI9341::tLCD' cannot appear in a constant-expression
`*' cannot appear in a constant-expression
ISO C++ forbids initialization of member 'LCD'
making 'LCD' static
感谢您的帮助:)
【问题讨论】:
-
LCD要引用什么?编译时tLCD中没有任何内容 -
我不能引用指针吗?我的意思是在接下来的几行中
tLCD将指向类的新对象。 -
@NathanOliver:它将引用
tLCD初始化指向的任何内容。非静态成员初始化发生在初始化类对象时,而不是在编译时,并且不需要常量表达式。听起来这个编译器对它的支持不完整。 -
或者那个支持被禁用了。试试
--std=c++11(或gnu++11或c++14等)
标签: c++ class constants constant-expression