例如:
class A
{
public:
A();
int a;
};
class B
{
A::A()
{
a = 1;
}
};
答案 0 :(得分:0)
回答这个问题的最好方法就是一句话:不要。在您的示例中,A
和B
之间没有关系,因此您甚至没有理由尝试在另一个类中定义构造函数。您希望在A
中提及B
的构造函数的唯一原因是B
是否来自A
。您希望将A
的部分保留为A
,而不是将它们分成其他类,并使其成为可读性和维护的噩梦。简短版本是您应该将A
的所有部分保留为A
,因此请勿尝试将它们放在其他位置。
答案 1 :(得分:0)
不,你不能。
引自标准[class.mfct] paragraph 1(强调我的):
成员函数可以在其类定义中定义,在这种情况下,它是内联成员函数,或者如果已经声明但未在其类定义中定义,则可以在其类定义之外定义它。 出现在类定义之外的成员函数定义应出现在包含类定义的命名空间范围内。
在您的示例中,定义出现在类范围中,这与此规则相矛盾。