C ++ - 模板类,头文件和重复错误

时间:2013-12-10 19:40:13

标签: c++ visual-studio-2012 compiler-errors

当我有一个完全在头文件中声明的类(模板化类型),并且该头文件包含在多个cpp源文件中时,每个包含头文件的源文件似乎都会报告一次编译错误。因此,如果我有一个在8个不同位置使用的标题,则会报告8次错误。

连连呢?我是否必须忍受这种情况,我做错了,还是什么?

修改

除了一般都很烦人之外,这也会在将鼠标悬停在VS中的红色波浪线上时弄乱错误弹出窗口。耶。

enter image description here

(使用Visual Studio 2012)

2 个答案:

答案 0 :(得分:0)

关于你声明的类,它是否包含你所有方法的定义?

是否是肯定的,那么你应该在你的课堂外宣布你的功能,只留下你的课程中的原型,因为你似乎在你的每一个包括重新定义它们导致错误,尽管你应该为我们提供更多关于你得到的错误的信息..

//.h
//type as int, double or anything

template<type N>
class Foo
{
    public:

    template<typename T>
    void foo_fct();
};

//.cpp
#include ".h"

template<type N>
template<typename T>
void Foo<N>::foo_fct()
{
    //stuff here
}

这应该解决问题。

答案 1 :(得分:-1)

不允许多次包含同一文件。 E.g

班级foo 包括“测试”

班级栏 包括“测试”

阶级foobar
包括“酒吧”
包括“foo”

foobar会抛出错误,因为它包含了一个将进行测试的栏,然后当它试图包含foo时它会尝试再次包含测试。