0

有没有办法重新声明一个类来定义只声明到这里的方法?

例如。就像是:

class A
{
    void a();
    void b() {}
}

class A
{
    void a() {}
}

代替

class A
{
    void a();
    void b() {}
}

A::a() {}    

原因是我使用类定义中定义的方法创建了很多代码,而不使用标题。到目前为止我还没有循环引用,但最近有需要。我不喜欢通过Type::method语法定义一堆方法,因为在类的后一个定义之前只需要知道很少的方法。

所以我有点喜欢backward declaration, 在循环引用之前声明或定义几个方法,然后再定义整个类。

4

2 回答 2

3

不,没有办法重新定义一个类。

根据 C++ 语言标准,类定义为:

class-specifier:
    class-head { member-specification_opt }

该标准明确规定成员规范应该在类定义中是完整的:

类的成员是数据成员、成员函数 (9.3)、嵌套类型和枚举器。类定义中的成员规范声明了类的全部成员;不能在其他地方添加任何成员

该标准还给出了重新定义类的示例:

struct S { int a; };
struct S { int a; }; // error, double definition

病态的,因为它定义了 S 两次。

于 2014-01-04T09:25:31.113 回答
0

不幸的是,一旦关闭,就无法再次声明该类}

你唯一能做的就是你可以继承和定义方法。

class B : public A { a() {} } ;
于 2014-01-04T09:18:14.897 回答