2013-09-19 1 views
1

Заголовок:Keep получать unordered_map ошибка компилятора

#include <unordered_map> 
#include "O.h" 
#include "P.h" 

using namespace std; 

class O{ 
public: 
    O(); 

    unordered_map<int,P>* X(); 
    unordered_map<int,P>* Y(); 

private: 
    unordered_map<int,P>* b; 
    unordered_map<int,P>* a; 
}; 

Источник:

#include "O.h" 
#include "P.h" 
#include <unordered_map> 

using namespace std; 

O::O(){ 
    a= new unordered_map<int,P>(); 
    b= new unordered_map<int,P>(); 
} 

unordered_map<int,P>* O::X(){ 
     return b; 
} 

unordered_map<int,P>* O::Y(){ 
     return a; 
} 

Ошибка:

1> O.cpp (76): ошибка: тип возвращаемого значения делает не соответствует функции тип 1> возврат b;

1> O.cpp (80): ошибка: тип возвращаемого значения не соответствует функции тип 1> return a;

я схожу с ума, пытаясь отладки это ....

EDIT: Intel Compiler v13

+3

Выглядит хорошо, может быть проблема с тем, как 'P' определяется. –

+0

BTW будет приятно добавить 'using Map = unordered_map ' – Elazar

+4

Я подозреваю, что вы хотели '#include" P.h "' в заголовке, а не '' O.h''. –

ответ

1

Код, который вы выложили действует C++, поэтому вопрос должен находиться в другом месте в коде , Я бы проверял включенные заголовки. Вот пример с действующей декларации P:

#include <unordered_map> 
using namespace std; 

class P{ 
public: 
    int a = 3; 
}; 

class O{ 
public: 
    O(); 

    unordered_map<int,P>* X(); 
    unordered_map<int,P>* Y(); 

private: 
    unordered_map<int,P>* b; 
    unordered_map<int,P>* a; 
}; 

O::O(){ 
    a= new unordered_map<int,P>(); 
    b= new unordered_map<int,P>(); 
} 

unordered_map<int,P>* O::X(){ 
    return b; 
} 

unordered_map<int,P>* O::Y(){ 
    return a; 
} 

int main(){ 
    O o; 
    auto map = o.X(); 
    return 0; 
} 

ideone: http://ideone.com/Y4ydzj

 Смежные вопросы

  • Нет связанных вопросов^_^