Ĺadny brzuch
Ostatnio ambitnie chciałem zabrać się za programowanie obiektowe... niestety już na początku napotkałem parę problemów i nie umiem ich przeskoczyć :(
Problem 1
Mając taki kod:
class klasa1 { public: class klasa2 { public: int Zmienna; }; klasa1() { // stąd chciałbym zmiennej Zmienna nadać jakąś wartość. // niestety kompilator protestuje :( // może źle się do tej zmiennej odwołuję? // wcześniej próbowałem klasa2::Zmienna = ileś; // error C2597: illegal reference to non-static member 'klasa1::klasa2::Zmienna' // próbowałem też różnych wariacji na temat friend class ale chyba nie w tym rzecz :( } };
Problem 2
class Line { public: Line(int Parametr) // chciałem by konstruktor korzystał z wart. Parametr { ... } }; ... Line *List; List = new Line[NrOfElem]; // Jak tu dopisać, żeby wszystkie elementy dynamicznej tablicy były wywoływane z konstruktorem dla Parametr = X?
Będę wdzięczny za pomoc :)
ad. 1 Stwórz najpierw obiekt klasy, a potem odwołuj się do zmiennych w niej albo zadeklaruj zmienną jako zmienną statyczną.
ad. 2 Jakoś się pewnie da bo mamy przeciążenia i operator "new" też można przeciążać, ale to jak wyciągać armatę żeby zabić muchę. Zrób jakiegoś fora i po kłopocie ;)
Nie jest to dokładnie o co Ci chodzi, ale można zawsze zrobić tak:
Line **List;
List = new *Line[ILES_TAM];
for(int i = 0; i < ILES_TAM; i++) List[i] = new Line(X);
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Problem 1
Mając taki kod:
class klasa1 { public: class klasa2 { public: int Zmienna; }; klasa1() { // stąd chciałbym zmiennej Zmienna nadać jakąś wartość. // niestety kompilator protestuje :( // może źle się do tej zmiennej odwołuję? // wcześniej próbowałem klasa2::Zmienna = ileś; // error C2597: illegal reference to non-static member 'klasa1::klasa2::Zmienna' // próbowałem też różnych wariacji na temat friend class ale chyba nie w tym rzecz :( } };
Problem 2
class Line { public: Line(int Parametr) // chciałem by konstruktor korzystał z wart. Parametr { ... } }; ... Line *List; List = new Line[NrOfElem]; // Jak tu dopisać, żeby wszystkie elementy dynamicznej tablicy były wywoływane z konstruktorem dla Parametr = X?
Będę wdzięczny za pomoc :)
ad. 1 Stwórz najpierw obiekt klasy, a potem odwołuj się do zmiennych w niej albo zadeklaruj zmienną jako zmienną statyczną.
ad. 2 Jakoś się pewnie da bo mamy przeciążenia i operator "new" też można przeciążać, ale to jak wyciągać armatę żeby zabić muchę. Zrób jakiegoś fora i po kłopocie ;)
Nie jest to dokładnie o co Ci chodzi, ale można zawsze zrobić tak:
Line **List;
List = new *Line[ILES_TAM];
for(int i = 0; i < ILES_TAM; i++) List[i] = new Line(X);