Note that there are some explanatory texts on larger screens.

plurals
  1. POVirtual function not working
    text
    copied!<p>The first class is:</p> <pre><code>class SistemPornire{ protected: Motor &amp;_motor; Electromotor &amp;_electromotor; public: SistemPornire(Motor&amp;,Electromotor&amp;); virtual void pornire_motor(); void opreste_motor(); }; </code></pre> <p>The implementation of the virtual function is:</p> <pre><code>SistemPornire::SistemPornire(Motor &amp;motor, Electromotor &amp;electromotor) :_motor(motor), _electromotor(electromotor) { } void SistemPornire::pornire_motor() { std::cout &lt;&lt; "Sistemul de pornire a trimis comanda porneste_motor electromotorului." &lt;&lt; std::endl; this-&gt;_electromotor.start(_motor); } </code></pre> <p>The second class:</p> <pre><code>class SistemPornireCuPreincalzire:public SistemPornire { public: SistemPornireCuPreincalzire(Motor&amp;,Electromotor&amp;); void pornire_motor(); }; </code></pre> <p>Its implementation:</p> <pre><code>SistemPornireCuPreincalzire::SistemPornireCuPreincalzire(Motor&amp;motor, Electromotor&amp;electromotor) : SistemPornire(motor, electromotor) { } void SistemPornireCuPreincalzire::pornire_motor() { std::cout &lt;&lt; "A inceput preincalzirea" &lt;&lt;std::endl&lt;&lt; "Preincalzirea incheiata" &lt;&lt; std::endl; std::cout &lt;&lt; "Sistemul de pornire a trimis comanda porneste_motor electromotorului." &lt;&lt; std::endl; this-&gt;_electromotor.start(_motor); } </code></pre> <p>In the main function I'm trying to call the function <code>pornire_motor()</code> for an object of type <code>SistemPornireCuPreincalzire</code> yet it would print out the message from the <code>SistemPornire::pornire_motor()</code> function.</p> <p>Could you please tell me what is it that I am doing wrong? Is the information I have provided sufficient?</p> <pre><code>class Autoturism { private: Electromotor electromotor; Motor motor; SistemPornire sistem_pornire; SistemDirectie sistem_directie; CutieViteze cutieviteze; public: Autoturism(SistemPornire&amp;, Electromotor&amp;, Motor&amp;, SistemDirectie&amp;); void porneste_autoturism(); void condu_la_destinatie(); void parcheaza_autoturism(); }; Autoturism::Autoturism(SistemPornire &amp;sp, Electromotor&amp;e, Motor&amp;m, SistemDirectie&amp;sd): sistem_pornire(sp), electromotor(e), motor(m), sistem_directie(sd) { } void Autoturism::porneste_autoturism() { std::cout &lt;&lt; "Comanda porneste_autoturism a fost trimisa catre sistemul de pornire." &lt;&lt; std::endl; this-&gt;sistem_pornire.pornire_motor(); } void Autoturism::condu_la_destinatie() { this-&gt;porneste_autoturism(); std::cout &lt;&lt; "Odata ce masina a pornit, soferul o poate conduce la destinatie." &lt;&lt; std::endl; this-&gt;cutieviteze.gearUp(); this-&gt;sistem_directie.stanga(0); this-&gt;cutieviteze.gearUp(); this-&gt;cutieviteze.gearUp(); this-&gt;cutieviteze.gearDown(); this-&gt;sistem_directie.stanga(90); this-&gt;cutieviteze.gearUp(); this-&gt;sistem_directie.stanga(0); this-&gt;cutieviteze.gearDown(); this-&gt;sistem_directie.dreapta(30); this-&gt;sistem_directie.dreapta(0); this-&gt;sistem_directie.dreapta(10); std::cout &lt;&lt; "Odata ce s-a ajuns la destinatie masina e gata de a fi parcata." &lt;&lt; std::endl; this-&gt;parcheaza_autoturism(); std::cout &lt;&lt; "Soferul a ajuns la destinatie." &lt;&lt; std::endl; } void Autoturism::parcheaza_autoturism() { std::cout &lt;&lt; "Comanda parcheaza_autoturism a fost trimisa catre sistemul de pornire." &lt;&lt; std::endl; this-&gt;sistem_pornire.opreste_motor(); } </code></pre> <p>Main function:</p> <pre><code>int main() { Motor motor; Electromotor electromotor; SistemPornire sistempornire(motor, electromotor); SistemDirectie sistemdirectie; SistemPornireCuPreincalzire sistempornireINC(motor, electromotor); Autoturism masina(sistempornireINC, electromotor, motor,sistemdirectie); std::cout &lt;&lt; "Porneste autoturism:" &lt;&lt; std::endl; masina.porneste_autoturism(); std::cout &lt;&lt; "Parcheaza autoturism:" &lt;&lt; std::endl; masina.parcheaza_autoturism(); std::cout &lt;&lt; "Condu la destinatie:" &lt;&lt; std::endl; masina.condu_la_destinatie(); return 0; } </code></pre>
 

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