C++ 从C+中的模板类派生非模板类时出现的问题+;
我正在尝试从指定我需要的witch类型的模板类继承非模板类 我的代码如下: 基类的头文件(已更新): 我收到一些链接器错误,说明:C++ 从C+中的模板类派生非模板类时出现的问题+;,c++,inheritance,sfml,template-classes,g++-4.7,C++,Inheritance,Sfml,Template Classes,G++ 4.7,我正在尝试从指定我需要的witch类型的模板类继承非模板类 我的代码如下: 基类的头文件(已更新): 我收到一些链接器错误,说明: In function `Derived::Derived(float, int, sf::Vector2<int>)': undefined reference to `Base<sf::Vector2<int> >::Base(sf::Vector2<int>, int)' 在函数'Derived::Derive
In function `Derived::Derived(float, int, sf::Vector2<int>)':
undefined reference to `Base<sf::Vector2<int> >::Base(sf::Vector2<int>, int)'
在函数'Derived::Derived(float,int,sf::Vector2')中:
对“Base::Base(sf::Vector2,int)”的未定义引用
我也使用“G++(Ubuntu/LimARO4.7.3-1Ubuntu1)4.7.3”作为我的C++编译器,C++ 11启用。
< P>如果编译器想隐式实例化你的模板(你想要的99.9%的案例),编译器必须看到成员的定义。将基
构造函数的定义移到标题处,这将解决您的问题。@david rodriguez-dribeas:链接器仍然会告诉您errors@david-罗德里格斯·德里比斯:同样的错误@ARF:很难相信,但这可能是因为您试图编译的内容与问题中显示的内容之间存在差异。尽量减少失败的程序,然后公布准确的程序和错误。@david rodriguez dribeas:现在我太困了!:zZ我明天就做!顺便说一句,TnX很多@david rodriguez dribeas:不完全如您所问,但我已将代码更新为与我的代码类似的版本;)成千上万的副本。。。摆脱你的base.cpp文件。@kerrek sb:不!这不是我的问题。我仍然有问题,当我把我的方法内联和/或包括在类定义中时,我有一辆车在车库里,它不会启动。我问机修工,告诉他症状:我转动钥匙,什么也没发生。那很可能是电池。所以我买了一个电池并安装了它。我转动钥匙,发动机就发动不起来了。发动机罩下没有发动机可能与此有关。这并不意味着我不需要电池(我没有电池!),这只意味着我的车可能还有其他问题。@DavidRodríguez dribeas 10次中有9次是由后备箱中死去的妓女引起的。
//derived.hpp
#include <SFML/System.hpp>
#iclude "base.hpp"
class Derived: public Base<sf::Vector2i> {
public:
Derived(float, int, Vector2i);
// .. other methods
protected:
// .. other variables
}
//derived.cpp
#include "derived.hpp"
Derived::Derived(float initf, int myint, Vector2i vec) :
Base(vec, myint) {
// ... some codes
}
$ g++ ./main.cpp ./derived.cpp ./base.cpp -lsfml-system
In function `Derived::Derived(float, int, sf::Vector2<int>)':
undefined reference to `Base<sf::Vector2<int> >::Base(sf::Vector2<int>, int)'