static_cast无法转换向量的地址

时间:2016-03-03 18:47:35

标签: c++ gcc stl

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;
}

我尝试将vector视为一个对象并像上面那样对其地址进行cout但是失败了,那我该如何判断向量的地址呢。

2 个答案:

答案 0 :(得分:2)

您可能希望尝试使用

编译代码,而不是使用gcc
g++ -std=c++14 

然后它应该有效:https://ideone.com/y0DwdA

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

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

答案 1 :(得分:1)

使用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;
    }
}