C++ 将非常量参数传递给常量参数

C++ 将非常量参数传递给常量参数,c++,function,C++,Function,假设我有一个这样的函数 my_method(const vector<const T*> & param); my_方法(常量向量和参数); 我想知道是否可以用这种方式调用该函数 vector<T*> my_vector; my_method(my_vector); vector my_vector; my_方法(my_向量); 你不能做你想做的事std::vector与std::vector的类型不同,因此函数参数与函数参数不匹配。 如果它将一种类型的参

假设我有一个这样的函数

my_method(const vector<const T*> & param); 
my_方法(常量向量和参数);
我想知道是否可以用这种方式调用该函数

vector<T*> my_vector;
my_method(my_vector);
vector my_vector;
my_方法(my_向量);

你不能做你想做的事
std::vector
std::vector
的类型不同,因此函数参数与函数参数不匹配。 如果它将一种类型的参数传递给一个需要另一种类型参数的函数,那么您试图做的不是“将非常量参数传递给常量参数”。 “将非常量参数传递给常量参数”类似于

my_method(const vector<T*> & param);

vector<T*> v; // non const vector

my_method(v); // OK, method takes v by const reference, so it cannot be modify v.
my_方法(常量向量和参数);
向量v;//非常量向量
我的方法(五);//好的,方法通过常量引用获取v,所以不能修改v。
你能做到的


注意,在上面的示例中,
my_方法
无法修改
vector v
,但由于
v
持有非常量指针,因此可以修改那些指向的对象。

您无法执行您试图执行的操作
std::vector
std::vector
的类型不同,因此函数参数与函数参数不匹配。 如果它将一种类型的参数传递给一个需要另一种类型参数的函数,那么您试图做的不是“将非常量参数传递给常量参数”。 “将非常量参数传递给常量参数”类似于

my_method(const vector<T*> & param);

vector<T*> v; // non const vector

my_method(v); // OK, method takes v by const reference, so it cannot be modify v.
my_方法(常量向量和参数);
向量v;//非常量向量
我的方法(五);//好的,方法通过常量引用获取v,所以不能修改v。
你能做到的

注意,在上面的示例中,
my_方法
无法修改
vector v
,但由于
v
持有非常量指针,因此可以修改这些指向的对象。

尝试一下,看看:

简答覆—否

vector<const T*> my_vector;
vector my_vector;
但是,它会起作用。

试试看:

简答覆—否

vector<const T*> my_vector;
vector my_vector;

但是,将起作用。

创建向量的副本,但使用常量指针:

vector<T*> pointers;

vector<const T*> const_pointers(pointers.begin(), pointers.end());

my_method(const_pointers);
向量指针;
向量常量指针(pointers.begin(),pointers.end());
我的方法(常量指针);

创建向量的副本,但使用常量指针:

vector<T*> pointers;

vector<const T*> const_pointers(pointers.begin(), pointers.end());

my_method(const_pointers);
向量指针;
向量常量指针(pointers.begin(),pointers.end());
我的方法(常量指针);

不幸的是,没有<代码>向量与
向量
不同。不幸的是,不是<代码>矢量与
矢量
不同。