Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > expected constant expression


Автор: Alca 16.4.2009, 15:37
Есть класс. В методе объявляю массив сhar-ов. Компилер ругается.
Код

//---------------------------------------------------------------------------
class CMyClass { 
    //...
    private: 
        const size_t cuiBuffSize;
    //...
}; 
//---------------------------------------------------------------------------
CMyClass::CMyClass() : cuiBuffSize(1024) {   

}   
//--------------------------------------------------------------------------- 
bool CMyClass::bFunc() {   
    char szBuff[cuiBuffSize];    //<<<<< error C2057: expected constant expression
    //...
}
//---------------------------------------------------------------------------

Переменная cuiBuffSize вроде как константа?

Добавлено @ 15:42
Если сделать переменную глобально (не как член класса), то все нормально.

Автор: Lazin 16.4.2009, 15:50
Код

//---------------------------------------------------------------------------
class CMyClass { 
    //...
    private: 
        static const size_t cuiBuffSize = 1024;
    //...
}; 
//---------------------------------------------------------------------------
CMyClass::CMyClass() {   
}   
//--------------------------------------------------------------------------- 
bool CXSmtp::bFunc() {   
    char szBuff[cuiBuffSize];    //<<<<< error C2057: expected constant expression
    //...
}
//---------------------------------------------------------------------------


Автор: Alca 16.4.2009, 15:59
Цитата

expected constant expression

Это потому-что константа получает значение не на этапе компиляции, а при создании объекта???

Автор: Lazin 16.4.2009, 16:14
ага

Автор: zim22 16.4.2009, 16:41
Alca, можно enumuration использовать
Код

class CMyClass {     //... 
      bool bFunc();
      enum {FIRST_SIZE = 1024, SECOND_SIZE = 2048, THIRD_SIZE = 4096};            
};
//--------------------------------------------------------------------------- 
bool CMyClass::bFunc() {   
    char szBuff[FIRST_SIZE];    //<<<<< error C2057: expected constant expression    
}

Автор: Alca 16.4.2009, 18:07
zim22, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)