2017-01-04 50 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文件,一切都應該工作。

編輯:保持頭中的定義是必要的,並允許模板類,但您的類不是模板。