我收到错误“方法已在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