【发布时间】:2017-03-07 11:55:50
【问题描述】:
我有一个模板类,
template< typename T >
class A
{
private:
T *array;
public:
A(int size)
{
//Initialises array with size
}
}
现在我需要一个 B 类,它接收 A 类的对象作为构造函数参数并将其分配给 A 引用的 B 本地成员。我怎么做?我试过了,
class B
{
private:
template<class T>
A<T> *a;
public:
template<class T>
B(A<T>(int) ar){
//assign ar to a
}
}
谁能帮我解决这个问题?
更新
实际上我想在这里实现的是,认为 A 类是一个通用的循环缓冲区,可以像A< int > int_buffer(20); 一样一次性初始化它,并且在不同的类中使用相同的 int_buffer,比如 B 和 C(生产者和消费者)。这是实现我的目标的正确方法还是您可以建议的任何更好的方法。
【问题讨论】:
-
您不能有模板成员变量。要完成您想要的,您需要type erasure 的形式。
-
B(A<T>(int) ar)中的(int)也是可疑的。 -
正确。模板不是对象。
-
哦是吗? @StoryTeller 感谢您的回复。您有类似问题的解决方案示例吗?
-
为什么不将
B设为模板?