Ошибка C2059: «константа» при попытке создать контейнер Qt в заголовочном файле с известным размером

Я использую 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 просто не может прочитать, и он говорит мне, что существует «неожиданный токен» (‘»).

Я делаю работу?

0

Решение

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

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

QVector<double> MyContainer;

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

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

Для получения дополнительной информации о списках инициализатора см., Например, этот урок, или же эта ссылка.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]