Неправильное использование квалифицированного имени с Qt в Linux - PullRequest
0 голосов
/ 02 октября 2018

У меня есть проект Qt, который прекрасно работает под Windows 7 или 10. Когда я пытаюсь собрать его на Centos 7, используя Qt 5.9.1, я получаю ошибки «Недопустимое использование квалифицированного имени», когда я пытаюсь взятьадрес статического члена класса.Например:

myClass.h

class myClass : public QObject
{
  Q_OBJECT
  . . .
  static QMutex  mtxLock;
  static QHash<QString, QString> hshMap;
};

myClass.cpp

QMutex myClass::mtxLock;
QHash<QString, QString> myClass::hshMap {{"key", "value"}};

void myClass::myFunction()
{
  QMutexLocker(&myClass::mtxLock);       // Invalid use of qualified-name
  if ( myClass::hshMap.contains("key") ) // No error
  {
  }
}

Чего мне не хватает?

1 Ответ

0 голосов
/ 02 октября 2018

Имя переменной для шкафчика отсутствует.Для компилятора это выглядит QMutexLocker &myClass::mtxLock; - как локальная переменная с определенным именем.

Вы можете исправить это так:

const QMutexLocker lock(&myClass::mtxLock);

Демо (gcc 4.8, потому что это компилятор CentOS 7 по умолчанию).

Это на самом деле под "Ошибка № 6" на Любопытно повторяющихся ошибок C ++ на Facebook .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...