在C++中动态分配变量类型

Dynamically assign variable type in C++

本文关键字:变量 类型 动态分配 C++      更新时间:2023-10-16

我想创建一个可以根据情况使用priority_queue或常规队列的算法。因此,应将相同的变量分配给队列或优先级队列,但代码的其余部分将是相同的。在Java中,这是可能的,因为继承

Queue<Customer> customerPriorityQueue = new PriorityQueue<>(capacity, idComparator);

C++有这样的东西吗?

是的,您需要根据要使用的容器类型使类模板化,例如:

template < typename Queue >
class Test
{
Queue queue;
public:
void push( int i )
{
queue.push( i );
}
};

如果你想要一个完全 Java 风格的多态容器基类:

template < typename T >
class Queue
{
public:
virtual void push( const T& t ) = 0;    
};
template < typename Q >
class QueueImpl : public Queue< typename Q::value_type >
{
public:
typedef typename Q::value_type value_type;
virtual void push( const value_type& t ) override
{
q.push( t );
}
private:
Q q;
};
std::unique_ptr< Queue< int > > queue = std::make_unique< QueueImpl< std::queue< int > > >();
queue->push( 1 );