这是我的问题,我试图创建一个可以在派生类中获取对队列成员的引用的基类。我的基类中有两个模板函数:
ArrayAdapter<String> adapter = new ArrayAdapter<String>(saved_passwords.this, android.R.layout.simple_list_item_1,MyClass.addArray);
和一个派生类,理论上可以为任何类型的函数class Base
{
template<TYPE type>
virtual void foo(std::queue<TYPE>*& typeQueue) //I know virtual isn't allowed
{
//do nothing as it's general case
}
template<typename TYPE>
void bar(TYPE type)
{
std::queue<TYPE>* typeQueue;
foo(typeQueue);
//... do some stuff with type
}
}
专门化
foo
上面的代码更多的是关于一个意识形态,然后是一个逐字逐句的代码,我希望函数class Derived : public Base
{
public:
template<>
void foo<int>(std::queue<int>*& m_integerQueue)
{
integerQueue= &m_integerQueue;
}
template<>
void foo<double>(std::queue<double>*& doubleQueue)
{
doubleQueue = &m_doubleQueue;
}
private:
std::queue<int> m_integerQueue;
std::queue<double> m_doubleQueue;
}
根据类型在派生类中调用相应的函数bar
在foo
被调用时指定。当然这个解决方案不起作用,这里的问题是我们不能使模板功能虚拟化。
我不确定这是否是设计错误,但这是一般的想法,我无法在任何地方找到合适的解决方案,所以我在这里发布了自己的问题。
已编辑以使我的问题清晰