Laj*_*agy 10 c++ gcc stl const
这编译:
int* p1;
const int* p2;
p2 = p1;
Run Code Online (Sandbox Code Playgroud)
这不是:
vector<int*> v1;
vector<const int*> v2;
v2 = v1; // Error!
v2 = static_cast<vector<const int*> >(v1); // Error!
Run Code Online (Sandbox Code Playgroud)
嵌套const指针的类型等价规则是什么?我认为转换是隐含的.此外,除非我真的需要,否则我宁愿不实现STL容器的逐点分配.
Joh*_*itb 43
无法直接分配.正如其他人所解释的那样,等价不是由指针类型建立的,而是由容器类型建立的.在这种情况下,vector不希望接受具有不同但兼容的元素类型的另一个向量.
没问题,因为你可以使用assign成员函数:
v2.assign(v1.begin(), v1.end());
Run Code Online (Sandbox Code Playgroud)
小智 7
问题不是指针,而是两个向量的类型.在您的示例中,模板化类型(如v1和v2的类型)之间没有标准转换.
在以下代码中可能更容易看到:
#include <vector>
using namespace std;
int main() {
vector <char> cv;
vector <int> iv;
cv = iv; // error
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3771 次 |
| 最近记录: |