相关疑难解决方法(0)

仅接受某些类型的C++模板

在Java中,您可以定义通用类,它只接受扩展您选择的类的类型,例如:

public class ObservableList<T extends List> {
  ...
}
Run Code Online (Sandbox Code Playgroud)

这是使用"extends"关键字完成的.

在C++中是否有一些简单的等效关键字?

c++ templates

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

c ++模板类; 具有任意容器类型的函数,如何定义它?

好的,简单的模板问题.假设我将模板类定义为:

template<typename T>
class foo {
public:
    foo(T const& first, T const& second) : first(first), second(second) {}

    template<typename C>
    void bar(C& container, T const& baz) {
        //...
    }
private:
    T first;
    T second;
}
Run Code Online (Sandbox Code Playgroud)

问题是关于我的bar函数...我需要它能够使用某种标准容器,这就是为什么我包含模板/ typename C部分来定义容器类型.但显然这不是正确的方法,因为我的测试类然后抱怨:

错误:此范围内未声明"bar"

那么我将如何以正确的方式实现我的条形函数呢?也就是说,作为我的模板类的函数,使用任意容器类型...我的模板类的其余部分工作正常(有其他函数不会导致错误),它只是一个有问题的函数.

编辑:好的,所以特定的函数(bar)是eraseInRange函数,它擦除指定范围内的所有元素:

void eraseInRange(C& container, T const& firstElement, T const& secondElement) {...}
Run Code Online (Sandbox Code Playgroud)

它将如何使用的一个例子是:

eraseInRange(v, 7, 19);
Run Code Online (Sandbox Code Playgroud)

其中v是这种情况下的向量.

编辑2:傻我!我本来应该在我班级之外宣布这个功能,而不是在它里面...这是非常令人沮丧的错误.无论如何,感谢大家的帮助,虽然问题有点不同,但信息确实帮助我构建了这个功能,因为在找到原来的问题后,我确实得到了一些其他令人愉快的错误.所以谢谢!

c++ containers templates

20
推荐指数
3
解决办法
3万
查看次数

标签 统计

c++ ×2

templates ×2

containers ×1