将数组的地址分配给另一个数组

时间:2015-10-01 21:05:47

标签: c++

我有这样的结构:

struct a
{
string b;
int c;
int *d;
}

我还宣布:

struct a e[i];

在循环中:

e[i].b= data1;
e[i].c= data2;
e[i].d=&(e[i].b);

这就是出现问题的地方:

e[i].d=&(e[i].b);

我想将字符串b的地址复制到d,这是一个指针。但是我一直收到错误,因为某些原因我无法将字符串转换为int。

1 个答案:

答案 0 :(得分:1)

成员变量b的类型为string,而成员变量d是int指针。没有从字符串*到int *的隐式转换。

你必须使用类似的东西 reinterpret_cast从string *转到int *但是我会尽力避免这样的事情,因为我认为它违反了严格的别名规则。

e[i].d = reinterpret_cast<int*>(&(e[i].b));

我建议首先使用字符串*而不是int *来保存地址。这样您就可以存储字符串的地址并保持正确的类型,从而允许您将其用作字符串而不仅仅是地址。

struct
{
    string b;
    int c;
    string* d;
};