Я использую Qt 4.8.5 с компилятором MSVC 2010 и отладчиком из Windows 7.0 SDK, и создатель Qt в качестве моей IDE.
Следующий синтаксис работает нормально:
class Device
{
public:
Device();
....
QVector<double> MyContainer;
....
protected:
....
}
, где QContainer может быть QVector, QList … и т. д., а T может быть любого типа.
Но следующий синтаксис запрещен создателем Qt и показывает «Ошибка C2059» при попытке компиляции:
class Device
{
public:
Device();
....
QVector<double> MyContainer(100);
....
protected:
....
}
Я так растерялся, поскольку в документе говорится, что синтаксис «QContainer = MyContainer (szie)» является законным, но мой создатель Qt просто не может прочитать, и он говорит мне, что существует «неожиданный токен» (‘»).
Я делаю работу?
Это потому, что вы пытаетесь назначить тип. QVector<double>
это тип, а не объявление переменной или что-либо еще, что вы можете назначить. Это означает, что и то и другое примеры на самом деле неверны.
Я думаю, что вы хотите объявить переменную-член MyContainer
, для которого вы должны использовать
QVector<double> MyContainer;
Чтобы инициализировать контейнер для определенного размера, вы должны использовать список инициализатора конструкторов:
Device()
: MyContainer(100)
{
...
}
Для получения дополнительной информации о списках инициализатора см., Например, этот урок, или же эта ссылка.
Других решений пока нет …