gpt4 book ai didi

c++ - 为什么指针 vector 不能转换为 const 指针的 const vector ?

转载 作者:IT老高 更新时间:2023-10-28 22:28:23 36 4
gpt4 key购买 nike

类型vector<char *>不能转换为 const vector<const char*> .例如,以下给出编译错误:

#include <vector>

using namespace std;

void fn(const vector<const char*> cvcc)
{
}

int main()
{
vector<char *> vc = vector<char *>();

fn(vc);
}

我明白为什么 vector<char*>不能转换为 vector<const char*> - const char * 类型的额外成员可以添加到 vector 中,之后它们可以作为非常量访问。但是,如果 vector 本身是 const,则不会发生这种情况。

我最好的猜测是这将是无害的,但编译器无法推断这是无害的。

如何解决这个问题?

这个问题是由 C++ FQA here 提出的。 .

最佳答案

一般来说,C++ 不允许你转换 someclass<T>someclass<U>作为模板someclass可能专门用于 U .没关系TU有关系。这意味着实现和对象布局可能不同。

遗憾的是,没有办法告诉编译器在哪些情况下布局和/或行为没有改变并且应该接受强制转换。我想它可能对std::shared_ptr 非常有用和其他用例,但这不会很快发生(AFAIK)。

关于c++ - 为什么指针 vector 不能转换为 const 指针的 const vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19122858/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com