我有一个类
到目前为止,最好的解决方案是这样的:
代替
CFirst
和CSecond
。
我不能对第二个类做任何事情,但我可以对第一个类做一些事情。
我试图在第一个类中从第二个类创建对象,但编译器仍然不满意。到目前为止,最好的解决方案是这样的:
class CFirst{
public:
CSecond m_sec;
CFirst ( const CSecond & sec ) {
CSecond m_sec(sec.a(),sec.b());
};
class CSecond{
public:
CSecond ( int a, int b) : m_A ( a ), m_B ( b ){ }
int a ( void ) const { return m_A; }
int b ( void ) const { return m_B; }
private:
int m_A;
int m_B;
};
但编译器报错:
'CFirst'的构造函数必须显式初始化成员变量'm_sec',该变量没有默认构造函数。
你有什么建议吗?
编辑:
我也尝试过(但没有成功)
m_sec(sec.a(),sec.b());
代替
CSecond m_sec(sec.a(),sec.b());
解释在答案下方的注释中。
CSecond
中对m_A
和m_B
使用的那种语法。 - Matteo ItaliaCFirst::CFirst(const CSecond&)
中引用CSecond
之前,您需要先声明它,因此您的类定义在这里是无序的。 - Davislor