从其他头文件实现结构

时间:2013-07-30 22:49:23

标签: c++ struct header extern

我必须在class-header中有一个“configset”结构,如下所示:

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

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

3 个答案:

答案 0 :(得分:1)

转发声明configset或将您在头文件中定义的函数声明为inline

答案 1 :(得分: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的指针时,这才有效。

答案 2 :(得分:1)

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