gpt4 book ai didi

c++ - 关于虚函数模板化的问题

转载 作者:行者123 更新时间:2023-11-30 03:11:06 25 4
gpt4 key购买 nike

我知道你不能模板化一个虚函数,我也理解它背后的概念。但我仍然需要一种方法来克服我遇到的一些错误。我能够让我的东西工作,但它看起来不适合我。

我有一个名为 System 的类(class):

#include "Vector.h"
class System
{
virtual void VectorToLocal(Vector<T>& global_dir,const Vector<T>* global_pos = 0) const = 0;
};

class UnresolvedSystem : public System
{
virtual void VectorToLocal(Vector<T>& global_dir,const Vector<T>* global_pos = 0) const
{
//do something
}
};

Vector.h :

tenplate<typename T>
class Vector
{
//some functions
};

现在我想模板化VectorToLocalsystem.h只拿Vector<T> ,但我做不到,因为它是一个虚函数。我想要一个解决方法。我知道我可以拥有 VectorToLocalVector<float> , Vector<double>等,作为论据,但我不想这样做。

最佳答案

成员函数模板不能是虚拟的。没有两种解决方法。

但是虚拟成员函数可以采用恰好使用模板的完全定义类型:

class System
{
public:
virtual void DoIt(vector<int>* v);
};


int main()
{
vector<int> v;
System s;
s.DoIt(&v);
return 0;
}

顺便问一下,您为什么要实现自己的 vector 类?

关于c++ - 关于虚函数模板化的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2519091/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com