有没有办法重新声明一个类来定义那些只声明了这个的方法?
EG。类似的东西:
class A
{
void a();
void b() {}
}
class A
{
void a() {}
}
而不是
class A
{
void a();
void b() {}
}
A::a() {}
原因是我使用在类定义中定义的方法创建了许多代码,而不使用标头。到目前为止我没有循环引用,但最近有需要。我不喜欢用Type::method
语法定义一组方法,因为在后一个类定义之前只需要知道很少的方法。
所以我有点像backward declaration
,在循环引用之前声明或定义几个方法,稍后定义整个类。
答案 0 :(得分:3)
不,没有办法重新定义一个班级。
根据C ++语言标准,类定义是:
class-specifier:
class-head { member-specification_opt }
标准明确指出成员规范应该在类定义中完成:
类的成员是数据成员,成员函数(9.3),嵌套类型和枚举器。类定义中的成员规范声明了该类的完整成员集; 其他任何成员都无法添加。
此标准还给出了重新定义类的示例:
struct S { int a; }; struct S { int a; }; // error, double definition
格式错误,因为它定义了S两次。
答案 1 :(得分:0)
不幸的是,一旦用}
关闭它,就无法再次声明该类。
你唯一能做的就是继承并定义方法。
class B : public A { a() {} } ;