[英]Template Specialization of class method. “Function template already defined”
[英]method already defined (template class)
我在所有方法上都收到錯誤“ class.obj中已經定義的方法”,我已經看到一些解決方案包括將類分為頭文件和.cpp文件,但是在這種情況下是不可能的。
任何幫助都感激不盡。
這是我的h文件: http : //pastebin.com/k46JEQBH
cpp具有:
#include "stdafx.h"
#include "poly.h"
問題在於您的定義位於標頭中,並且可能包含在多個.cpp文件中。 每個.cpp文件都是一個新的翻譯單元。 想象一下,一次編譯每個.cpp文件。 對於包含頭文件的每個.cpp文件,這是第一次遇到頭文件,尚未定義POLY_H
。 聲明可以多次出現,但定義不能出現。 將您的定義移動到一個單獨的.cpp文件,一切都會正常。
編輯:將定義保留在標題中是必需的,並且允許模板類使用,但是您的類未模板化。
可能是您一次使用#pragma嗎? 您正在使用什么編譯器?
並且您是否嘗試過使用包含防護來查看是否可以解決錯誤? 例如:
#ifndef POLY_H
#define POLY_H
//your code minus the pragma once
#endif //POLY_H
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.