gpt4 book ai didi

c++ - 使用模板实现接口(interface)的类的模板

转载 作者:搜寻专家 更新时间:2023-10-31 02:13:29 25 4
gpt4 key购买 nike

我正在尝试编写一个模板类,该类根据接口(interface)的模板实现定义其模板。为了澄清我的问题,这里有一个例子。

template<typename T>
class A{
virtual T getValue() = 0;
}

class B : public A<int>{
//does some things and implements getValue
}

//template definition
//T should become int by passing class B
class C{
A* aPointer;
T previousValue;
}

我已经尝试过模板模板(不是输入错误)语法,在这篇文章中解释得非常好。 What are some uses of template template parameters in C++? .但是因为 A 的类型在 B 的定义中是威慑的,所以它不起作用。

我应该如何着手创建一个确定 T 的模板。

最佳答案

您不能直接从 B 确定 T 的类型,但可以从它的接口(interface)确定。处理此问题的最佳方法是将 T 的类型定义添加到 A。

template<typename T>
class A{
virtual T getValue() = 0;
public:
typedef T ValueType;
}

class B : public A<int>{
//does some things and implements getValue
}

template<class T>
class C {
A<typename T::ValueType>* aPointer;
typename T::ValueType previousValue;
}

关于c++ - 使用模板实现接口(interface)的类的模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41292625/

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