类使用彼此的成员和错误

时间:2014-07-02 02:25:14

标签: c++ class friend

我有两个班级互相使用。

基本上,我有一个帮助类和一个头类(我会像那样调用它,head使用帮助器,但是从头开始使用辅助访问成员)。

所以它看起来像那样:

class CHead;

class CHelper
{
    public:
       Chelper() : m_head(0) {}; // default constructor
       CHelper(CHead *head) : m_head(head) {};

       SomeFunction(int id, int type = m_head->m_vTypes[id]); // ERROR HERE

    private:
       CHead *m_head;

       [...]
       bla bla
};


class CHead {
    friend class CHelper; // CHelper can access CHead members

    public:
         CHead(bla bla) : bla bla { bla bla };

         // Member m_helper is constructed at constructor end with smtn
         // like m_helper = CHelper(this);

    private:
         CHelper m_helper;

         [...]
         bla bla
}

好吧,我收到两个我不明白的错误:

首先,当我尝试做m_head-> m_vTypes []时,我得到:

  

非静态成员引用必须相对于特定对象

其次,我得到

  

标识符" id"未定义

我没有收到这些错误。 第一个应该没有问题没有?因为我宣布CHelper是CHead的朋友。 第二个让我生气。 " ID"在作为第一个论点之前宣布...

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:0)

第一个错误是因为必须在编译时知道默认参数,而不是在运行时。因此,您不能将任何类型的非文字表达式作为默认参数。

第二个错误是因为id没有类型。