Есть класс NavigationItem с вот таким методом:
QVariant NavigationItem::getValue() const
{
return val;
}
Из этих NavigationItem я делаю набор данных:
// Набор именованных навигационных данных
QMap<QString, NavigationItem> data;
И почему-то не компилируется такой код:
data.value("azimuth").getValue();
Ошибки вот такие:
../MobileIndicator/src/modules/dataLayer/NavigationData.cpp: In member function 'const T QMap<K, V>::value(const Key&, const T&) const [with Key = QString; T = NavigationItem]':
../MobileIndicator/src/modules/dataLayer/NavigationData.cpp:75:27: error: no matching function for call to 'NavigationItem::NavigationItem()'
return data.value(name).getValue();
^
../MobileIndicator/src/modules/dataLayer/NavigationData.cpp:75:27: note: candidates are:
In file included from ../MobileIndicator/src/modules/dataLayer/NavigationData.h:7:0,
from ../MobileIndicator/src/modules/dataLayer/ViewDataEmitter.h:7,
from ../MobileIndicator/src/core/Core.h:12,
from ../MobileIndicator/src/core/App.h:5,
from ../MobileIndicator/src/main.h:7,
from ../MobileIndicator/src/modules/dataLayer/NavigationData.cpp:2:
../MobileIndicator/src/modules/dataLayer/NavigationItem.h:13:5: note: NavigationItem::NavigationItem(QVariant::Type)
NavigationItem(QVariant::Type iType);
^
../MobileIndicator/src/modules/dataLayer/NavigationItem.h:13:5: note: candidate expects 1 argument, 0 provided
../MobileIndicator/src/modules/dataLayer/NavigationItem.h:9:7: note: NavigationItem::NavigationItem(const NavigationItem&)
class NavigationItem
^
../MobileIndicator/src/modules/dataLayer/NavigationItem.h:9:7: note: candidate expects 1 argument, 0 provided
../MobileIndicator/src/modules/dataLayer/NavigationItem.h:9:7: note: NavigationItem::NavigationItem(NavigationItem&&)
../MobileIndicator/src/modules/dataLayer/NavigationItem.h:9:7: note: candidate expects 1 argument, 0 provided
../MobileIndicator/src/modules/dataLayer/NavigationData.cpp:75:27: note: when instantiating default argument for call to const T QMap<K, V>::value(const Key&, const T&) const [with Key = QString; T = NavigationItem]
return data.value(name).getValue();
^
PS: Зато нормально компилируется конструкция:
data["azimuth"].getValue()
но я бы ей не хотел пользоваться для чтения, потому что оператор [ ] «Returns the value associated with the key key as a modifiable reference». У меня же вызывается геттер, и ничего не модифицируется, поэтому [ ] - вроде как оверхед.