• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Probelm z wyświetlenie obiektów tablicy c++

Object Storage Arubacloud
0 głosów
723 wizyt
pytanie zadane 11 maja 2016 w C i C++ przez sebask08 Użytkownik (510 p.)

#include "stdafx.h"
#include <iostream>
#include <string>
#include <stdio.h>
#include <conio.h>
#include <fstream>
#include <cstdlib>
 
using namespace std;



class Figura
{
public:
	virtual string Nazwa()=0;
	virtual double Obwod()=0;
	virtual double PolePowierzchni()=0;
};

class Prostokat : public Figura
{
private:
	int a;
	int b;
public:
	Prostokat(string Opis, int x, int y)
		:a(x),
		b(y)
	{
	}
	virtual string Nazwa(){return "Prostokat";};
	virtual double Obwod(){return a+a+b+b;};
	virtual double PolePowierzchni(){return a*b;};

};

class Kwadrat : public Figura
{
private:
	int a;
public:
	Kwadrat(string Opis, int x)
		:a(x)
	{
	}
	virtual string Nazwa(){return "Kwadrat";};
	virtual double Obwod(){return a+a+a+a;};
	virtual double PolePowierzchni(){return a*a;};

};
class Kolo : public Figura
{
private:
	int a;
public:
	Kolo(string Opis, int x)
		:a(x)
	{
	}
	virtual string Nazwa(){return "Kolo";};
	virtual double Obwod(){return 2*3.1415*a;};
	virtual double PolePowierzchni(){return 3.1415*a*a;};

};
class Elipsa : public Figura
{
private:
	int a;
	int b;
public:
	Elipsa(string Opis, int x, int y)
		:a(x),
		b(y)
	{
	}
	virtual string Nazwa(){return "Elipsa";};
	virtual double Obwod(){return a+a+b+b;};
	virtual double PolePowierzchni(){return 3.1415*a*b;};

};
int _tmain(int argc, _TCHAR* argv[])
{
fstream plik;
string licz;
int licznik=0;
 int x;
 int y;
plik.open("plik.txt", ios::in);
if (plik.good()==false) cout<<"Nie ma pliku"<<endl;

while (getline(plik,licz))
{
	licznik++;
}
plik.close();

plik.open("plik.txt", ios::in);
if(plik.good()==false) cout<<"Blad otwarcia pliku";

Figura *tablica[20];
string Opis;
 for (int i = 0; i<(licznik/2)-1; i++)
    {
       
        plik>>Opis;
		
        if (Opis == "prostokat")
        {
            plik>>x;
            plik>>y;
            tablica[i]=new Prostokat(Opis, x, y);

        }
		if (Opis == "kwadrat")
        {
            plik>>x;
			tablica[i]=new Kwadrat(Opis, x);

        }
		if (Opis == "kolo")
		{
			plik>>x;
			tablica[i]=new Kolo(Opis, x);

		}
		if (Opis == "elipsa")
		{
			plik>>x;
			plik>>y;
			tablica[i]=new Elipsa(Opis, x, y);
		}
     i++;
    }

	_getch();
	return 0;
}

zawartość pliku tekstowowego:
prostokat
2
8
kwadrat
3
kolo

elipsa
2
3

Witam,
Mam problem z wyświetleniem obiektów tych klas. Dlaczego nie mogę tego zrobić tak:

cout <<tablica[1].Nazwa()<<endl;

Ewentulanie proszę o link do jakiegoś materiału tłumaczącego deklarowanie tablicy obiektów w C++.

1 odpowiedź

0 głosów
odpowiedź 11 maja 2016 przez softkdp Obywatel (1,060 p.)
wybrane 12 maja 2016 przez sebask08
 
Najlepsza

Stworzyłeś tablicę wskaźników na obiekt typu Figura. W formie obecnej możesz spróbować: cout << tablica[1]->Nazwa() << endl; jako że operujesz na wskaźnikach.

komentarz 12 maja 2016 przez sebask08 Użytkownik (510 p.)
Dziękuje, tak włąsnie zrobiłem :D

Podobne pytania

0 głosów
1 odpowiedź 214 wizyt
0 głosów
1 odpowiedź 914 wizyt
0 głosów
1 odpowiedź 615 wizyt
pytanie zadane 31 grudnia 2018 w C i C++ przez Teslum_369 Gaduła (4,190 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...