如何将对象为参数的类的对象返回到另一个struct中

时间:2015-07-31 12:40:59

标签: c++

如果我有类结构,例如:

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类型?

1 个答案:

答案 0 :(得分:2)

您应该更新您的方法以返回&head->dat,该方法与声明方法返回的类型相同。

Data* UseData::returnDataObj(int c)
{
    node* head = table[c];

    if(head == NULL)
       return NULL;
    else
       return &head->dat;
}

目前,您尝试仅返回类型为head的{​​{1}}。显然,您可以看到类型不匹配。