내 필요성은 다른 구조에 비슷한 구조를 지정하는 것입니다. 이름이 다릅니다. 이름이 같은 경우 = (할당)을 직접 사용할 수 있습니다. 비트 복사하므로 memcopy 사용하고 싶지 않아요.다른 유형의 두 구조를 지정할 수 있습니까?
struct first{
int i;
char c;
}
struct second{
int i;
char c;
//we can overload assignment operator to copy field.
void operator = (struct first& f)
i=f.i;
c=f.c;
}
int main()
{
struct first f;
f.i=100;
f.c='a';
struct second s=f;
}
하지만 컴파일 오류가 발생합니다. 오류 : "처음"에서 비 스칼라 유형 "초"로 변환이 요청되었습니다.
가능한지 확실하지 않습니다.
여기서는 할당하지 않습니다. 당신은 객체를 복사하고 있습니다. 복사 생성자가 필요합니다. –
초기화! = 할당. 'first'를 인수로 취하는'second'에 대한 생성자를 쓰거나 'first'에서'second'에 변환 연산자를 씁니다. –
당신은 캐스트 - 쓰 - 유니온 관용구를 사용할 수 있으며 또한 컴파일러가 코드를 손상시킬 수있는 앨리어싱 최적화를 수행하지 않도록합니다. 아니면 그냥 memcpy, 아주 무차별 한 힘. –