我的需求是將相似的結構分配給另一個,只是名稱不同。 如果它的名字相同,我們可以直接使用=(賦值)。 我不想使用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;
}
但我得到編譯錯誤。 錯誤:請求從「第一個」轉換爲非標量類型「第二個」。
不確定是否有可能。
在這裏,你不分配。您正在複製對象。所以複製構造函數需要 –
初始化!=賦值。寫一個'second'的構造函數,將'first'作爲參數,或者寫一個轉換運算符,'second','first'。 –
你可以使用cast-through-a-union成語,也可以確保編譯器不會做任何可能會破壞你的代碼的別名優化。或者只是memcpy,非常暴力。 –