funkcje abstrakcyjne

funkcje abstrakcyjne
MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

nie wie ktoś jak się dostać do wartości zmiennej przez wskaźnik z klasy abstrakcyjnej tak jak jest to z metodami np "wsk->wypisz()" to jak dostać się do zmiennej takiego obiektu?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
2

Dokładnie w ten sam sposób, tylko weź pod uwagę że widzisz tylko zmienne należące do tejże klasy a nie do jej potomków i że "z zewnątrz" widzisz tylko publiczne pola.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Kot kot; Pies pies;
Zwierze *wsk;

wsk = &kot;

cout << wsk->x << endl;

tylko że jak napisze to w ten sposób to wyświetla mi się miejsce w pamięci na którą wskazuje wskaźnik

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
0

Gadasz jakieś bzdury. Pokaż kompletny kod który nie działa. Bo teraz nie wiadomo czym są Kot, Pies i Zwierze i czym jest x. Daj kawałek kodu który można skompilować i uruchomić.

MA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0
Kopiuj
#include "stdafx.h"
using namespace std;

class Zwierze
{
public:
	int x;
	virtual void wczytaj() = 0;
};



class Kot :public Zwierze
{
public:
	int x;
	virtual void wczytaj()
	{
		cin >> x;
	}
};



int main()
{
	Zwierze *wsk;
	Kot k1;
	wsk = &k1;
	wsk->wczytaj();
	cout << k1.x << endl;                  <---------- takie użycie zmiennej działa 
	cout << wsk->x << endl;                <---------- i chodzi mi o to czy dz się pokazać ją za pomocą wskaźnika  
	getchar();
    return 0;
}
carlosmay
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Pabianice
0
Kopiuj
#include <iostream>

class Animal
{
protected:
    int x;
public:
    Animal(int x) : x{ x } {}
    virtual void Show()  = 0;
};


class Dog :public Animal
{
public:
    Dog(int x) : Animal(x) {}
    virtual void Show() { std::cout << "Dog: " << this->x << '\n'; }
};

int main()
{
    Animal* dog = new Dog(1);
    dog->Show();

    Animal* animal;
    Dog dog2(2);
    animal = &dog2;
    animal->Show();
}
Z8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 21
1

nadpisujesz definicję zmiennej x w klasie "Kot"... aby rozwiązać problem usuń drugą definicję w klasie "Kot"... a tamta cyfra to nie adres a nie zainicjowana zmienna "losowa" z pamięci...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.