je jedno jestli to jsou objekty nebo primitivní datové typy. Důležité je, že ty sám si definuješ sémantiku kopírování - hluboká kopie, transfér vlastnictví, počítání referencí, atd. Pokud chceš dělat hlubokou kopii, tak jednoduše zkopíruješ všechno, co ta třída obsahuje, tak jak píše KIIV.
A v tvém případě:
CDriver::CDriver(const CDriver& other)
: m_Name(other.m_Name), m_Surname(other.m_Surname),m_LogNr(other.m_LogNr),
m_Log(0)
{
m_Log = new TLog[m_LogNr];
for(int i = 0; i < m_LogNr; ++i)
{
m_Log[i].m_Date = other.m_Log[i].m_Date;
m_Log[i].m_Car = new CCar(*other.m_Log[i].m_Car);
}
}
po radě kolegy jsem to udělal trošku jinak, do public definice jsem si dal friend třídy a v kopírujícím konstruktoru CDatabase jsem nakopíroval složky a některé objekty znovu vytvořil.