【发布时间】:2014-07-02 02:25:14
【问题描述】:
我有两个类互相使用。
基本上,我有一个助手类和一个头类(我会这样称呼它,头使用助手,但助手从头访问成员)。
看起来是这样的:
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”在第一个参数之前被声明...
有人可以帮忙吗?
【问题讨论】: