已经定义的方法(模板类)

时间:2017-01-04 16:07:57

标签: c++ templates object linker-errors

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

非常感谢任何帮助。

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

cpp有:

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

2 个答案:

答案 0 :(得分:1)

问题是您的定义位于标题中,并且可能包含在多个.cpp文件中。每个.cpp文件都是一个新的翻译单元。想象一下,你一次编译一个.cpp文件。对于包含标头的每个.cpp文件,它将是第一次遇到标头,POLY_H尚未定义。允许声明多次出现,但定义不允许出现。将您的定义移动到单独的.cpp文件中,一切都应该有效。

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

答案 1 :(得分:0)

你曾经使用过#pragma吗?你用的是什么编译器?

您是否尝试过使用包含警卫来查看是否可以解决错误?例如:

#ifndef POLY_H
#define POLY_H
//your code minus the pragma once
#endif //POLY_H
相关问题