我很抱歉我很确定这是一个相当愚蠢的问题,但我无法让它工作!Dev-C++中的多个文件,链接器错误。模板
我也不确定什么信息是太多的信息,所以我可能不会提供足够的信息,所以也很抱歉 - 只是问。
我开始在main.cpp中编写一个类,它变得很大,所以我决定将它移到不同的源文件。我并不太确定如何做到这一点,也无法找到任何有助于解决互联网资源(因此问题)的具体问题。
我从类定义开始,包括主程序函数上面的所有函数定义。这运行良好。然后我把它分成两个独立的部分。主函数上方的类声明(我认为这是正确的术语)以及主函数下面的函数定义。
这也运行得非常好。我开始将类声明切成一个头文件。这个头文件的形式
#ifndef INC_MATRIX_H
#define INC_MATRIX_H
class matrix{
//ETC
};
#endif
我所读的地方是有用的,但我不完全知道为什么,我认为这是停止的功能重新声明如果头被包含不止一次。
所以目前我们有这个头文件以及其他包括在内。然后是主函数,然后是主函数下面的函数定义。这也编译和运行非常好。
我采取的下一步是将函数定义切割成它们各自的.cpp文件。对这个.cpp文件唯一的补充是一些额外的包含必须被添加到顶端(特别是iostream和cstdlib)。此外还包括了matrix.h文件。
在这个配置中,当我尝试编译和运行代码时,Dev-C++会引发链接器错误。具体地说它们是形式
[连接子错误]未定义参考来
matrix <bool>::matrix(int, int)
和代码不运行(明显)。 我该如何解决这个问题?提前致谢。
编辑:我们发现这是由于它是一个模板类,并且在matrix.cpp文件的范围内,模板没有引入到bool类型中。我现在想弄清楚如何解决这个问题,而不需要添加大量的代码来分别让每个函数接受每个给定的类型。 哦,我很欣赏我可以在头文件中定义函数。但我认为我们并不打算这么做?我认为这个想法是,你只是简单地包含声明。
这个问题是“教我如何编程!”虽然互联网是伟大的,但所有的书籍仍然是学习基础知识的更好方式。谷歌搜索和SO问题只会让你到目前为止。一旦你获得了一些基本面,他们会更好地回答有针对性的问题。 – 2009-12-19 20:27:32