C++ 通过具有模板专门化的基类在const方法中调整本地容器的大小
我想创建一个类的实例,并根据类型提供一个调整大小功能,该功能仅适用于提供此类功能的容器(为简单起见,假设它只是一个向量)。调整大小是在基类中完成的,因为我有几个类有一个公共的基类,但都需要相同的功能 下面的代码演示了当前的问题C++ 通过具有模板专门化的基类在const方法中调整本地容器的大小,c++,templates,c++14,constants,specialization,C++,Templates,C++14,Constants,Specialization,我想创建一个类的实例,并根据类型提供一个调整大小功能,该功能仅适用于提供此类功能的容器(为简单起见,假设它只是一个向量)。调整大小是在基类中完成的,因为我有几个类有一个公共的基类,但都需要相同的功能 下面的代码演示了当前的问题 #include <iostream> #include <vector> class base { public: template<typename T> void resize(T &var, T &
#include <iostream>
#include <vector>
class base {
public:
template<typename T>
void resize(T &var, T &resizer) {
var.resize(resizer.size());
std::cout << "resized a vector" << std::endl;
}
void resize(double &var, double &resizer) {
std::cout << "just a double, no resizing done" << std::endl;
}
};
template<typename T>
class child1 : public base {
public:
void doOperation() const {
T a, b;
// assume here that b has actually a different size from a
this->resize(a, b);
}
};
template<typename T>
class child2 : public base {
public:
void wildlyDifferentOperation() const {
T c, d;
// assume here that d has actually a different size from c
this->resize(c, d);
}
};
int main() {
child1<std::vector<double>> obj1;
obj1.doOperation();
child2<std::vector<int>> obj2;
obj2.wildlyDifferentOperation();
child1<double> obj3;
obj3.doOperation();
return 0;
}
#包括
#包括
阶级基础{
公众:
模板
无效调整大小(T&var、T&resizer){
var.resize(resizer.size());
std::coutMakebase::resize
或者static
或者const
。如果不知道这里的语义,我猜const
为什么不能将resize
声明为const方法?