当我有一个完全在头文件中声明的类(模板化类型),并且该头文件包含在多个cpp源文件中时,每个包含头文件的源文件似乎都会报告一次编译错误。因此,如果我有一个在8个不同位置使用的标题,则会报告8次错误。
连连呢?我是否必须忍受这种情况,我做错了,还是什么?
修改
除了一般都很烦人之外,这也会在将鼠标悬停在VS中的红色波浪线上时弄乱错误弹出窗口。耶。
(使用Visual Studio 2012)
答案 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 包括“测试”班级栏 包括“测试”
阶级foobarfoobar会抛出错误,因为它包含了一个将进行测试的栏,然后当它试图包含foo时它会尝试再次包含测试。