0

我必须在类头中有一个结构“configset”,如下所示:

class A {
public:
    static configset *getnext();
}

当然,编译器会抱怨 configset 不是一种类型,但它是在另一个头文件中实现的,以及一些函数。因此,我不能只包含那个头文件,编译器会抛出这些函数被多次定义的错误。但是我怎样才能在我的类头中获取配置集?只是复制也不起作用,因为编译器会抛出一个错误,即结构被定义了两次。

4

3 回答 3

1

前向声明configset或声明在头文件中定义的函数为inline.

于 2013-07-30T22:55:00.793 回答
1

像这样使用前向声明

// Forward declare configset. Tells compiler that the class/struct is defined in 
// another translation unit
struct configset;

class A {
public:
    static configset *getnext();
};

请注意,这仅在您仅使用指向 configset 的指针时才有效。

于 2013-07-30T22:55:13.080 回答
1

configset方法的实现移动到单独的 .cpp(不是头文件)文件中。

于 2013-07-30T22:57:30.860 回答