Note that there are some explanatory texts on larger screens.

plurals
  1. POoverload operator=, different class as argument
    primarykey
    data
    text
    <p>I have a problem with below code, it compiles, yet the output crashes to desktop without giving me any suggestion what i'm doing wrong.</p> <p>I know the problem is within operator= overloading at 'Ciezarowy::operator = (const Samochod &amp;sam)' and its executed at 'ciezar[0] = samochody[0];'</p> <p>Sorry for long main() but i'm doing it for learning purpose so i want to see result for all actions.</p> <p>here's the code, compiled by CodeBlocks/MinGW.</p> <pre><code>#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; class Samochod{ public: string marka; int pojemnosc; double przebieg; Samochod(); Samochod operator = (const Samochod &amp;sam); Samochod(const Samochod &amp;sam); }; Samochod::Samochod() { string marki[5] = {"Opel","Audi","Toyota","Fiat","Mazda"}; int index = rand() % 5; marka = marki[index]; pojemnosc = rand() % 2000 + 1200; przebieg = 40000; } Samochod Samochod::operator = (const Samochod &amp;sam) { marka = sam.marka; pojemnosc = 3000; przebieg = sam.przebieg; } Samochod::Samochod(const Samochod &amp;sam) { marka = sam.marka; pojemnosc = 3000; przebieg = sam.przebieg; } class Osobowy:public Samochod { public: Osobowy(); int lpas; double pojb; int ldrzwi; }; Osobowy::Osobowy() : lpas( 5 ) , pojb( rand() % 100 + 80 ) , ldrzwi ( 5 ) { } class Ciezarowy:public Samochod { public: Ciezarowy(); int losi; double ladownosc; bool samow; Ciezarowy operator = (const Samochod &amp;sam); }; Ciezarowy::Ciezarowy() : losi ( rand() % 2 + 2 ) , ladownosc ( 1000 ) , samow ( 1 ) { } Ciezarowy Ciezarowy::operator = (const Samochod &amp;sam) { marka = sam.marka; przebieg = sam.przebieg; } int main() { srand( time( NULL ) ); Samochod samochody[4]; Samochod samoch[3]; for ( int i = 0;i&lt;3;i++){ samoch[i] = samochody[i];} cout&lt;&lt;samochody[0].marka&lt;&lt;endl; cout&lt;&lt;samochody[0].pojemnosc&lt;&lt;endl; cout&lt;&lt;samochody[0].przebieg&lt;&lt;endl; cout&lt;&lt;samochody[1].marka&lt;&lt;endl; cout&lt;&lt;samochody[1].pojemnosc&lt;&lt;endl; cout&lt;&lt;samochody[1].przebieg&lt;&lt;endl; cout&lt;&lt;samochody[2].marka&lt;&lt;endl; cout&lt;&lt;samochody[2].pojemnosc&lt;&lt;endl; cout&lt;&lt;samochody[2].przebieg&lt;&lt;endl; cout&lt;&lt;samochody[3].marka&lt;&lt;endl; cout&lt;&lt;samochody[3].pojemnosc&lt;&lt;endl; cout&lt;&lt;samochody[3].przebieg&lt;&lt;endl; cout&lt;&lt;samoch[0].marka&lt;&lt;endl; cout&lt;&lt;samoch[0].pojemnosc&lt;&lt;endl; cout&lt;&lt;samoch[0].przebieg&lt;&lt;endl; cout&lt;&lt;samoch[1].marka&lt;&lt;endl; cout&lt;&lt;samoch[1].pojemnosc&lt;&lt;endl; cout&lt;&lt;samoch[1].przebieg&lt;&lt;endl; cout&lt;&lt;samoch[2].marka&lt;&lt;endl; cout&lt;&lt;samoch[2].pojemnosc&lt;&lt;endl; cout&lt;&lt;samoch[2].przebieg&lt;&lt;endl; Osobowy osob[3]; osob[1].ldrzwi = 3; osob[1].lpas = 4; cout&lt;&lt;osob[0].marka&lt;&lt;endl; cout&lt;&lt;osob[0].pojemnosc&lt;&lt;endl; cout&lt;&lt;osob[0].przebieg&lt;&lt;endl; cout&lt;&lt;osob[0].ldrzwi&lt;&lt;endl; cout&lt;&lt;osob[0].lpas&lt;&lt;endl; cout&lt;&lt;osob[0].pojb&lt;&lt;endl; cout&lt;&lt;osob[1].marka&lt;&lt;endl; cout&lt;&lt;osob[1].pojemnosc&lt;&lt;endl; cout&lt;&lt;osob[1].przebieg&lt;&lt;endl; cout&lt;&lt;osob[1].ldrzwi&lt;&lt;endl; cout&lt;&lt;osob[1].lpas&lt;&lt;endl; cout&lt;&lt;osob[1].pojb&lt;&lt;endl; cout&lt;&lt;osob[2].marka&lt;&lt;endl; cout&lt;&lt;osob[2].pojemnosc&lt;&lt;endl; cout&lt;&lt;osob[2].przebieg&lt;&lt;endl; cout&lt;&lt;osob[2].ldrzwi&lt;&lt;endl; cout&lt;&lt;osob[2].lpas&lt;&lt;endl; cout&lt;&lt;osob[2].pojb&lt;&lt;endl; Ciezarowy ciezar[2]; ciezar[0] = samochody[0]; ciezar[1].ladownosc = 500; ciezar[1].samow = 0; cout&lt;&lt;ciezar[0].marka&lt;&lt;endl; cout&lt;&lt;ciezar[0].pojemnosc&lt;&lt;endl; cout&lt;&lt;ciezar[0].przebieg&lt;&lt;endl; cout&lt;&lt;ciezar[0].losi&lt;&lt;endl; cout&lt;&lt;ciezar[0].ladownosc&lt;&lt;endl; cout&lt;&lt;ciezar[0].samow&lt;&lt;endl; cout&lt;&lt;ciezar[1].marka&lt;&lt;endl; cout&lt;&lt;ciezar[1].pojemnosc&lt;&lt;endl; cout&lt;&lt;ciezar[1].przebieg&lt;&lt;endl; cout&lt;&lt;ciezar[1].losi&lt;&lt;endl; cout&lt;&lt;ciezar[1].ladownosc&lt;&lt;endl; cout&lt;&lt;ciezar[1].samow&lt;&lt;endl; return 0; } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload