我有两个班级互相使用。
基本上,我有一个帮助类和一个头类(我会像那样调用它,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"在作为第一个论点之前宣布...
任何人都可以提供帮助吗?
答案 0 :(得分:0)
第一个错误是因为必须在编译时知道默认参数,而不是在运行时。因此,您不能将任何类型的非文字表达式作为默认参数。
第二个错误是因为id
没有类型。