static_cast无法转换向量的地址

static_cast fail to cast the address of vector

本文关键字:向量 地址 转换 cast static      更新时间:2023-10-16
vector<vector<int>> v;
vector<int> v0;
for(int i = 0; i < 5; i++){
    v.push_back(v0);
}
for(int i = 0; i < v.size(); i++){
    cout << static_cast<void const *>(&(v[i])) << endl;
}

尝试将向量视为一个对象并像上面一样查询其地址,但失败了,那么我该如何获取向量的地址。

与其使用

gcc ,不如尝试使用

g++ -std=c++14 

然后它应该工作:https://ideone.com/y0DwdA。

我可以使用 gcc 重现的链接器错误很可能与此处描述的编译器之间的差异有关。


正如@πάνταῥεῖ所指出的,编译器标志-std=c++11也可以工作。

编译代码g++ -std=c++11 -Wall main.cc

#include <iostream>
#include <vector>
int
main()
{
    using namespace std;
    vector<vector<int>> v;
    vector<int> v0;
    for(int i = 0; i < 5; i++){
        v.push_back(v0);
    }
    for(size_t i = 0; i < v.size(); i++){
        cout << reinterpret_cast<size_t>(&(v[i])) << endl;
    }
}