[cpp] lista jednokierunkowa z obiektami

0

Witam,
mam problem z listą jednokierunkową operującą na obiektach i obiektach dziedziczących.

class object{
    public:
    int a;
    int b;
    int c;
    object();
    ~object();
    object *next;
    virtual int resolve() = 0; 
    private:
    static object *head;
    };

class line : public object {
    public:
    int resolve(int);
    private:
    line(int, int);
    ~line();
    };

class square : public object {
    public:
    int resolve(int);
    private:
    square(int, int, int);
    ~square();
    };

square i line mają zawierać równania linii i funkcji kwadratowych.

konstruktory równań mają zbierać dane czyli chyba coś takiego:

 
line::line(int d, int e) {
    cout << "creating new line" << endl;
    a=d;
    b=e;
    
    };
    
    
square::square(int i, int o, int p) {
    cout << "line constructor" << endl;
    a=i;
    b=o;
    c=p;
    };    
    

tylko teraz mam problem, ponieważ zawsze do dodawania nowego obiektu do listy używałem oddzielnej funkcji, a tutaj dodawać obiekt ma konstruktor klasy object. Kombinowałem, kombinowałem i wreszcie na nic nie wpadłem :) obiekt ma być wepchnięty na początek listy

// w tej klasie funkcje resolve itp to już inna historia :) nie wiem tylko jak upchnąć te listę :)

0

zastanawiam sie tylko czy jest to defakto mozliwe, bo jesli : object::object(int aa,int bb,int cc):next(NULL) to trzeba by w konstruktorze dac tworzenie obiektu : obeject za pomoca new a to zaprowadzi nas do zapetlenia sie calosci rekurencyjnie ... przynajmniej mi sie tak wydaje ze to jest nieco klopotliwe.

Inaczej to by wygladalo jakby to jakby dac jeszcze jedna klase:

class obj{
static object *head;
public:
obj(){
....
object *ob2=new object(...);
....
}
};

nie wiem czy o to ci chdzilo ...

0

własnie maja być te 3 klasy tylko.
zastanawiało mnie jak to robić, bo przecież konstruktor sam przydziela już pamięć z automatu jeżeli się nie mylę i tworzenie nowego obiektu przez new by tylko zapychało jeszcze więcej i mijało się z ideą konstruktora :)

0

konstruktor inicjalizuje obiekty ale nie tworzy ich...

w zadaniu chodzi o to zeby nie tworzyc obiektu klasy w konstruktorze object tylko spr w nim czy jest juz cos przypisane do head jesli nie dac next na null a head=this;

a jak juz jest head to w konstruktorze klasy dajemy zeby
next=head; // w sensie next <=> prev
head=this;

w wowczas chcac dodac nowy obiekt do listy dajesz po prostu new line(param) i jest on utworzony na liscie...
dzieki dziedziczeniu na liscie mozemy przechowywac obikety roznych typów o różnych wlasnosciach...

<ort>bynajmniej </ort>ja to tak widze... jesli sie myle to prosze o poprawke ...

pozdrawiam

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