2015-02-12 4 views
0

Может ли кто-нибудь объяснить мне, почему эти ошибки существуют во время моей компиляции?`* 'не может отображаться в константном выражении

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 

Спасибо за любую помощь :)

+2

Что будет «LCD» для ссылки? Во время компиляции в 'tLCD' ничего нет – NathanOliver

+0

Не могу ли я сделать ссылку на указатель? Я имею в виду, что в следующих нескольких строках 'tLCD' будет указывать на новый объект класса. – Klusio

+2

@NathanOliver: Он собирается ссылаться на то, что инициализировал tLCD. Инициализация нестатического члена происходит, когда объект класса инициализируется, а не во время компиляции, и не требует постоянного выражения. Похоже, что у этого компилятора есть неполная поддержка. –

ответ

1

Ваш компилятор не может инициализировать ILI9341_due &LCD с в классе инициализации. Инициализируйте его в списке инициализации конструктора.

+0

Спасибо, это сработало. – Klusio