2017-01-04 136 views
0

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

任何帮助将非常感激。

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

的CPP具有:

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

回答

0

难道是你的#pragma使用一次?你使用什么编译器?

你有没有尝试使用包括卫兵,而不是看看是否能解决错误?例如:

#ifndef POLY_H 
#define POLY_H 
//your code minus the pragma once 
#endif //POLY_H 
+0

我正在使用visual studio 2015.我试过你的例子,但无济于事。 – Leo

+0

环顾四周,看起来[this](http://stackoverflow.com/questions/622229/error-lnk2005-already-defined-c)会帮助你。在本地测试您的问题后,将所有内容(包括构造函数)内联,它已成功构建。 – Trevor

+0

尽管我很好奇,为什么不能将代码分成hpp/cpp文件? – Trevor

1

的问题是你定义在你的头,而且它可能被包含在多个.cpp文件。每个.cpp文件都是一个新的翻译单元。想象一下,每次编译一个.cpp文件。对于包含头文件的每个.cpp文件,这将是第一次遇到头文件,POLY_H将不会被定义。声明允许出现多次,但定义不是。将你的定义移动到一个单独的.cpp文件,一切都应该工作。

编辑:保持头中的定义是必要的,并允许模板类,但您的类不是模板。