2016-04-12 39 views
0

MSVC2013 ile 'QJsonObject :: yineleyici' kullanmaya çalışırken garip bir hata yaşıyorum.hata: C2039: 'işaretçisi': 'QJsonObject :: yineleyici' bir üyesi değil

Bu kod derler ve MSVC2008 ile beklendiği gibi çalışır
#include <QCoreApplication> 
#include <QJsonObject> 
#include <QDebug> 
#include <algorithm> 

void processValue(QJsonValue value) { 
    qDebug() << value.toString(); 
} 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QJsonObject jsonObject; 
    jsonObject.insert("a", "A"); 
    jsonObject.insert("b", "B"); 
    jsonObject.insert("c", "C"); 
    jsonObject.insert("d", "D"); 
    jsonObject.insert("e", "E"); 

    std::for_each (jsonObject.begin(), jsonObject.end(), processValue); 

    return a.exec(); 
} 

ve MinGW (WinCE çapraz derleme), ancak MSVC2013 ile:

Ben şu örneği var. Her durumda, Qt 5.5.1 kullanıyorum.

hata iletisi:

C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xutility(375) : error C2039: 'pointer' : is not a member of 'QJsonObject::iterator' 
     c:\qt\qt5.5.1msvc\5.5\msvc2013\include\qtcore\qjsonobject.h(96) : see declaration of 'QJsonObject::iterator' 
     C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xutility(584) : see reference to class template instantiation 'std::iterator_traits<_InIt>' being compiled 
     with 
     [ 
      _InIt=QJsonObject::iterator 
     ] 
     C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\algorithm(31) : see reference to function template instantiation 'void std::_Debug_range<_InIt>(_InIt,_InIt,std::_Dbfile_t,std::_Dbline_t)' being compiled 
     with 
     [ 
      _InIt=QJsonObject::iterator 
     ] 
     ..\QJsonObjectIteratorIssue\main.cpp(21) : see reference to function template instantiation '_Fn1 std::for_each<QJsonObject::iterator,void(__cdecl *)(QJsonValue)>(_InIt,_InIt,_Fn1)' being compiled 
     with 
     [ 
      _Fn1=void (__cdecl *)(QJsonValue) 
,   _InIt=QJsonObject::iterator 
     ] 
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xutility(375) : error C2146: syntax error : missing ';' before identifier 'pointer' 
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xutility(375) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xutility(375) : error C2602: 'std::iterator_traits<_InIt>::pointer' is not a member of a base class of 'std::iterator_traits<_InIt>' 
     with 
     [ 
      _InIt=QJsonObject::iterator 
     ] 
     C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xutility(375) : see declaration of 'std::iterator_traits<_InIt>::pointer' 
     with 
     [ 
      _InIt=QJsonObject::iterator 
     ] 
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\xutility(375) : error C2868: 'std::iterator_traits<_InIt>::pointer' : illegal syntax for using-declaration; expected qualified-name 
     with 
     [ 
      _InIt=QJsonObject::iterator 
     ] 

Sadece 2 diğer derleyicilerde tesadüfen çalışmak olur Burada yanlış bir şey yapıyor muyum?

cevap