c++ - 方法已经定义(模板类)

标签 c++ templates object linker-errors

我在我的所有方法上都收到错误“类中已定义的方法”, 我已经看到一些解决方案包括将类分成一个头文件和一个 .cpp 文件,但在这种情况下这是不可能的。

任何帮助将不胜感激。

这是我的 h 文件:http://pastebin.com/k46JEQBH

cpp 有:

#include "stdafx.h"
#include "poly.h"

最佳答案

问题是您的定义在您的 header 中,并且它可能包含在多个 .cpp 文件中。每个 .cpp 文件都是一个新的翻译单元。假设您一次编译每个 .cpp 文件。对于包含您的 header 的每个 .cpp 文件,这将是第一次遇到该 header ,POLY_H 尚未定义。声明可以出现多次,但定义不行。将您的定义移动到一个单独的 .cpp 文件中,一切都应该有效。

编辑:将定义保留在标题中对于模板类是必要的并且是允许的,但是您的类不是模板化的。

关于c++ - 方法已经定义(模板类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41468327/

相关文章:

c# - 使用或不使用 new 在 C# 中创建对象

java - 使用对象实例化作为枚举条目的值是好习惯吗?

C++忽略数组中的相同数字

c++ - 使用 C++ 的字符编码和文件名

C++将 vector 传递给函数模板

c++ - 模板内的模板 : why "` >>' should be ` > >' within a nested template argument list"

javascript - 无法使用变量动态访问对象属性

c++ - 有人可以解释最多一次不变和存在、所有权和保护规则是什么吗?

c++ - 在 C++11 中,我可以为非聚合类型实现类似构造函数的聚合类型初始化吗?如何实现?

c++ - Constexpr,如果测试一个模板参数