2014-01-16 5 views
0

Я использую Qt 4.8.5 с компилятором и отладчиком MSVC 2010 из Windows 7.0 SDK и создателем Qt в качестве моей IDE ,(Solved) Ошибка C2059: «константа» при попытке создать контейнер Qt в файле заголовка с известным размером

Следующий синтаксис работает отлично:

class Device 
{ 
public: 
    Device(); 
    .... 
    QVector<double> MyContainer; 
    .... 
protected: 
    .... 
} 

, где QContainer может быть QVector, QList ... и т.д., и T может быть любого типа.

Но следующий синтаксис отрицается Qt Creator и показывает «Ошибка C2059» при попытке компиляции:

class Device 
{ 
public: 
    Device(); 
    .... 
    QVector<double> MyContainer(100); 
    .... 
protected: 
    .... 
} 

Я так растерялся, так как говорится в документе синтаксис «QContainer = MyContainer (Szie)» является законный, но мой Qt создатель просто не умеет читать, и он говорит мне, что это «неожиданный маркер" (».

могу ли я worng делать?

+1

Что такое 'MyContainer'? И вы на самом деле пишете, например. 'QVector = MyContainer;'? Не могли бы вы показать еще какой-нибудь контекст (т. Е. Окружающий код)? И более конкретно, пожалуйста, покажите нам * реальный * код. –

+0

Sry Я добавил дополнительную информацию об этом. – Tay2510

ответ

2

это потому, что вы пытаетесь присвоить типа. QVector<double> - это тип, а не объявление переменной или все, что вы можете назначить. Это означает, что оба примера на самом деле ошибочны.

Я думаю, что вы имеете в виду, чтобы объявить переменную-член MyContainer, для которого вы должны использовать

QVector<double> MyContainer; 

Для инициализации контейнера определенного размера, вы должны использовать список Конструкторы инициализатора:

Device() 
    : MyContainer(100) 
{ 
    ... 
} 

Дополнительные сведения о списках инициализаторов см., Например, this tutorial, или this reference.

+0

Я извиняюсь, что «=» - это просто опечатка на моем посту, и я ее исправил. Кроме того, большое спасибо, ссылки дают мне много намеков и разъясняют мою проблему. Теперь я знаю, как исправить эту ошибку, спасибо! – Tay2510