Diskuze: C++ chyba
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Jak může obsah dědit z kruhu, už jsi někdy viděl obsah, který by byl zároveň kruh? Dědí třeba kruh z tvaru, protože kruh je zároveň tvar. Podle kódu jsi nepochopil základní myšlenky OOP, než budeš něco dělat, je dobrý nápad si o tom nejdříve přečíst - https://www.itnetwork.cz/cplusplus/kurz
Děkuju moc za opravu a zároveň se ptám, zda by následující řešení bylo akceptovatelné?
stdafx.h
#pragma once
#include "targetver.h"
#include <iostream>
#include <stdio.h>
#include <tchar.h>
using namespace std;
class Tvar
{
virtual void VypoctiObsah() {};
virtual void VypoctiObvod() {};
};
class Kruh : public Tvar
{
public:
void ZadejPolomer() { cin >> polomer; }
virtual void VypoctiObsah() override { cout << polomer * polomer * 3.14F; }
virtual void VypoctiObvod() override { cout << polomer * 3.14F * 2;}
private:
float polomer;
};
program.cpp
#include "stdafx.h"
int main()
{
Kruh jeden;
cout << "Zadejte polomer kruhu: ";
jeden.ZadejPolomer();
cout << "\nTady je obvod: ";
jeden.VypoctiObvod();
cout << endl;
cout << "A tady je obsah: ";
jeden.VypoctiObsah();
cin.get(); cin.get();
return 0;
}
Todle již vypadá mnohem lépe.
Ještě ti asi nesedí návratové typy těch metod, neboť z toho nijak nedostaneš vypočtené hodnoty. (Beru zpět - valíš to rovnou na výstup -> moje chyba)
A když už si tam hraješ s těma virtuálníma metodama, zjisti si co je to
abstraktní třída a zkus to zakomponovat, bylo by to pak
ještě lepší.
virtual float VypoctiObsah() = 0;
virtual float VypoctiObvod() = 0;
--
David Hartinger sorry za dislike, uklepl jsem se
Zobrazeno 5 zpráv z 5.