funkcje abstrakcyjne

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?

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.

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

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ć.

0
#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;
}
0
#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();
}
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...

1 użytkowników online, w tym zalogowanych: 0, gości: 1