プロが教えるわが家の防犯対策術!

構造体について分からないことがあるので、質問いたします。

struct A {
int id;
char name[20];
}
struct B {
char address[50];
long phone_numer;
struct A a_struct;
}

という二つの構造体があります。

void func(A a)
{
B b;
b = a;
}
のようにbの構造体にaのメンバ変数の値を代入したいです。しかしこの状態では構造体同士を=で結ぶことが出来ないので、エラーになってしまいます。

そこで、
struct B {
char address[50];
long phone_number;
struct A a_struct;
B &operator=(const A &rhs)
{
a_struct.id = rhs.id;
a_struct.name = rhs.name;
return (*this);
}
のようにして=を定義してあげればいいと考えたのですが、このようにすると、”no suitable user-defined conversion from "" to "" exists”と出てしまいコンパイルできません。

まだc++について学び始めなので、見当違いなことをしてたら申し訳ありません。
何卒宜しくお願い致します。

A 回答 (2件)

void func(A a)


{
B b;
b.a_struct = a;

じゃダメな理由は?
まあ、B b は func 抜けると解放されるから使えないってのは置いておいて。
    • good
    • 2

>struct A {


> int id;
> char name[20];
>}

char[]の中身のコピーって、
>a_struct.name = rhs.name;
で出来ましたっけ?
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!