【发布时间】:2011-04-18 18:38:11
【问题描述】:
我有一个任务:
实现一个模板向量类(我们将其命名为 myvector)。我需要在我的项目的多个文件中使用这个类,所以我把它的声明放在“myvector.h”文件中,并将实现放在“myvector.hpp”文件中,然后在“myvector.hpp”中包含“myvector.hpp”。 h" 在所有声明之后(如there 所述)。但是,我在“myvector.hpp”中有一个非模板函数。因此,当我在主文件中包含“myvector.h”文件时,一切正常。但是当我在另一个文件(“bignum.cpp”)中包含“myvector.h”时,我得到一个链接器错误:
error LNK2005: "unsigned int __cdecl gerasimov_dmitry::calculate_capacity(unsigned int)" (?calculate_capacity@gerasimov_dmitry@@YAII@Z) already defined in bignum.obj
我了解原因 - main.cpp 和 bignum.cpp 文件中都包含“bignum.h”代码,因此编译器不知道要使用哪一个“calculate_capacity”函数。所以,我的问题是如何解决这种情况。
【问题讨论】:
标签: c++ templates linker linker-errors