相关疑难解决方法(0)

C++模板模板(双模板?)

我想构建一个Stack类,以便用户能够选择他想用于实现的容器Stack.例如,List/Vector.

部分代码:

stack.h

#ifndef STACK_H_
#define STACK_H_

template <typename T, template<typename T> class ContainerType>
class Stack{
    ContainerType<T> container;
public:
    Stack() : container(ContainerType<T>()){}

};

#endif /* STACK_H_ */
Run Code Online (Sandbox Code Playgroud)

TEST.CPP

#include "stack.h"
#include <vector>

int main(){   
    Stack<int, std::vector<int> > stack;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

好吧,它没有编译.我在网上得到了下一个错误:

Stack<int, std::vector<int> > stack;
Run Code Online (Sandbox Code Playgroud)

错误:

expected a class template, got `std::vector<int, std::allocator<int> >' test.cpp

invalid type in declaration before ';' token test.cpp

type/value mismatch at argument 2 in template parameter 
list for …
Run Code Online (Sandbox Code Playgroud)

c++ templates

11
推荐指数
1
解决办法
1万
查看次数

具有可变类型容器的类模板

我想知道是否可以创建一个类模板,其中的对象必须是容器,但属于用户指定的类型。

例如,现在我有一个这样的课程:

template<class T>
class Myclass {
    std::queue<T> queue;

    // SOME OTHER MEMBERS
}
Run Code Online (Sandbox Code Playgroud)

但我希望能够std::queue在需要时将该对象设为其他类型的容器,例如std:stack,以便能够处理具有除 FIFO 之外的其他类型策略的容器。

是否可以?或者是否有任何其他解决方案不涉及我创建另一个与此完全相同的类,但使用 astack而不是 a queue

c++ containers templates

3
推荐指数
1
解决办法
1364
查看次数

标签 统计

c++ ×2

templates ×2

containers ×1