如果我有类结构,例如:
class Data
{
public:
Data(int a, int b) : mem_a(a), mem_b(b) { };
private:
int mem_a;
int mem_b;
}
class UseData
{
public:
UseData() { };
Data* returnDataObj(int c) { return DataObj; }
private:
struct node
{
Data dat;
node* next;
node(const Data aData) : dat(aData), next(NULL) { };
}
node** table;
}
在returnDataObj
内,我有类似的东西:
Data* UseData::returnDataObj(int c)
{
node* head = table[c];
if(head == NULL)
return NULL; //<-- No issues here
else
return head;// I get an error on this line - return type does not match;
}
由于head
的类型为node
,因此可以预料到这一点。有没有办法可以从Data
返回returnDataObj
类型?
答案 0 :(得分:2)
您应该更新您的方法以返回&head->dat
,该方法与声明方法返回的类型相同。
Data* UseData::returnDataObj(int c)
{
node* head = table[c];
if(head == NULL)
return NULL;
else
return &head->dat;
}
目前,您尝试仅返回类型为head
的{{1}}。显然,您可以看到类型不匹配。