Klasy C++

0

Witam,
Mam dwie klasy w jednej pole rok i dwie metody dodanie/pobranie wartości pola, a w drugiej chcę pobrać wartość pola z pierwszej klasy. A więc tworze obiekty dla klasy pierwszej dodaje wartość pola i przez obiekt drugiej klasy chce odczytać wartość tego pola, i tu mam problem odczytana wartość jest inna a więc co robię źle?

 
class opcje
{
private:
    int rok;
public:
    void set(int r)
    {
        rok = r;
    }

    int get()
    {
       return rok;
    }
};

class dane : opcje
{
public:
    int zwroc()
    {
        return get();
    }
};

int main()
{
    opcje o;
    dane d;

    o.set(2013);
    cout<<d.zwroc();

}
0

Albo nie rozumiesz sensu dziedziczenia, albo potrzebujesz czegoś takiego:

class opcje
  {
   private:
   static int rok;
   public:
   static void set(int r) { rok = r; }
   static int get() { return rok; }
  };
int opcje::rok;

class dane:public opcje
  {
   public:
   static int zwroc() { return get(); }
  };
 
int main()
  {
   opcje o;
   dane d;
 
   o.set(2013);
   cout<<d.zwroc();
   return 0;
  }
0

No dobra a jak pole rok nie będzie statyczne?

0

Obiekt o jest niezależnym obiektem w stosunku do obiektu d. Jeśli chcesz, je jakoś połączyć możesz w klasie dane utworzyć wskaźnik do klasy opcje (opcje*) i przypisać jeden obiekt do drugiego - wówczas będziesz miał do niego dostęp.

1
#include <iostream>
using namespace std;
 
class opcje
{
private:
    int rok;
public:
    void set(int r)
    {
        rok = r;
    }
 
    int get() const
    {
       return rok;
    }
};
 
class dane
{
public:
    int zwroc(const opcje& o)
    {
        return o.get();
    }
};
 
int main()
{
    opcje o;
    dane d;
 
    o.set(2013);
    cout<<d.zwroc(o)<<endl;
    return 0;
}

http://ideone.com/4s1jHn

  • To jest kompletnie bezsensu.

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