Witam!
Widzę że nie na darmo masz rangę bladawiec i przydało by Ci się kilka lekcji z C++
Tak to wymyśliłem. Oto przykład dlaczego:
- Kod: Zaznacz cały
TGlowna glowna[10];
//-------------------
void Jakas_funkcja(void) {
TGlowna glowna[5];
//Pozostale instrukcje
}
Tworząc tablice obiektów klasy TGlowna w funkcji Jakas_funkcja() mam już gotowe dane, na jakich mogę pracować. Nie muszę wykonywać dodatkowych czynności. Taki zapis staje się bardzo pomocny.
Tak oczywiście taki zapis byłby bardzo pomocny tylko niby skąd ten biedny kompilator ma wiedzieć jakie ścieżki chcesz mu tam podać ??!! Musisz to w jakiś sposób zrobić, tutaj lub w innym miejscu programu!!
Odpisujesz strasznie lakonicznie bez żadnej większej ilości szczegółów - nie bój się na pewno nikt nie zechce rościć sobie praw do Twojego kodu źródłowego
Tak naprawdę nie wiadomo o co do końca Ci chodzi!! Nie dajesz sobie pomóc mimo naszych szczerych chęci, więc nie pomogę radź sobie sam, zresztą uważam że to i tak najlepsza forma nauki!!
Wpadłem na pewien pomysł. Może wykorzystać do inicjalizacji tablicy obiektów przeładowanie operatorów [ ](...)Tylko nigdy czegoś takiego jeszcze nie robiłem
Właśnie widzę i na razie nie zabieraj się za to!!
Będziesz musiał jeszcze o tym poczytać, ale od razu Ci powiem że taki zapis jakiego Ty chcesz użyć nie będzie możliwy nawet przy przeładowaniu Twojego operatora!!
No i pozostaje pytanie jak usuwać obiekty stworzone za pomocą instrukcji new.
Operatorem
delete. Jeżeli takiego nie znasz to nie dobrze.
- Kod: Zaznacz cały
Pomysł jest dobry ale po pierwsze - nie można takiej listy modyfikować podczas pracy programu, a po drugie - jeżeli chciałbym zwiększyć tablicę np. do 100 to ten zapis mijałby się z celem.
A słyszałeś o czymś takim jak klasy pojemnikowe - wektor, lista, talia, drzewo, mapa? Jak nie to poczytaj może będą w stanie Ci pomóc.
Cyfrowy Baron napisał(a):Co do tego przeładowania (przeciążenia) operatorów, to wogóle tego nie rozumiem. W Twoim przypadku nie ma operatorów, tylko wartości określające rozmiar tablicy.
Zgadzam siÄ™!
Cyfrowy Baron napisał(a):TGlowna("plik1.txt") - to jest rzutowanie typu AnsiString na klasę TGlowna.
Nieprawda rzutowanie wyglądało by tak:
- Kod: Zaznacz cały
TGlowna obiekt = (TGlowna)"plik1.txt"
i wymagało by takiej definicji w klasie AnsiString:
- Kod: Zaznacz cały
AnsiString::operator TGlowna(void);
Natomiast powyższy zapis jest tylko stworzeniem tymczasowego obiektu klasy TGlowna za pomocą konstruktora TGlowna(AnsiString).
- Kod: Zaznacz cały
TGlowna glowna[] = {TGlowna("plik1.txt"), TGlowna("plik2.txt"), TGlowna("c:\\plik3.txt"), TGlowna("..\\plik.txt")};
W powyższym zapisie, każdy obiekt tymczasowy jest później kopiowany do nowej instancji obiektu klasy TGlowna w tablicy glowna.
Cyfrowy Baron napisał(a):Zastanawiam się po co te wszystkie kombinację.Zadanie na pewno da się zrealizować w jakiś łatwiejszy sposób.
Tego też jestem pewien!
Pozrawiam!
If a machine is expected to be infallible, it cannot also be intelligent.
-- A.Turing