我收到錯誤「方法已在class.obj中定義」在我所有的方法, 我已經看到,一些解決方案包括將類分爲頭和.cpp文件,但在這種情況下不可能。方法已經定義(模板類)
任何幫助將非常感激。
這是我的.h文件:http://pastebin.com/k46JEQBH
的CPP具有:
#include "stdafx.h"
#include "poly.h"
我收到錯誤「方法已在class.obj中定義」在我所有的方法, 我已經看到,一些解決方案包括將類分爲頭和.cpp文件,但在這種情況下不可能。方法已經定義(模板類)
任何幫助將非常感激。
這是我的.h文件:http://pastebin.com/k46JEQBH
的CPP具有:
#include "stdafx.h"
#include "poly.h"
難道是你的#pragma使用一次?你使用什麼編譯器?
你有沒有嘗試使用包括衛兵,而不是看看是否能解決錯誤?例如:
#ifndef POLY_H
#define POLY_H
//your code minus the pragma once
#endif //POLY_H
的問題是你定義在你的頭,而且它可能被包含在多個.cpp文件。每個.cpp文件都是一個新的翻譯單元。想象一下,每次編譯一個.cpp文件。對於包含頭文件的每個.cpp文件,這將是第一次遇到頭文件,POLY_H
將不會被定義。聲明允許出現多次,但定義不是。將你的定義移動到一個單獨的.cpp文件,一切都應該工作。
編輯:保持頭中的定義是必要的,並允許模板類,但您的類不是模板。
我正在使用visual studio 2015.我試過你的例子,但無濟於事。 – Leo
環顧四周,看起來[this](http://stackoverflow.com/questions/622229/error-lnk2005-already-defined-c)會幫助你。在本地測試您的問題後,將所有內容(包括構造函數)內聯,它已成功構建。 – Trevor
儘管我很好奇,爲什麼不能將代碼分成hpp/cpp文件? – Trevor