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::coutMake
base::resize
或者
static
或者
const
。如果不知道这里的语义,我猜
const

为什么不能将
resize
声明为const方法?