0

标题:

#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): error : 返回值类型与函数类型不匹配 1> return b;

1>O.cpp(80): 错误:返回值类型与函数类型不匹配 1> return a;

我要疯了,试图调试这个....

编辑:英特尔编译器 v13

4

1 回答 1

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

于 2013-09-19T21:40:23.083 回答