Wątek przeniesiony 2016-06-14 10:36 z C/C++ przez ŁF.

przekazywanie tablicy obiektów do innej klasy

0

Hej.
Mam utworzoną w funkcji głównej tablice obiektów i chciałbym te obiekty przekazać do innej klasy lub zrobić w jakiś sposób, ze mogę się odwoływać do konkretnych zmiennych danej klasy.
Myślałem o przekazaniu tablicyw taki sposób

Klasa klasa[5];
 
Innaklasa.metoda(klasa,5)

i w tej metodzie

(class,int)

ale nie działa

W jaki sposób można to przeskoczyć?
Dzięki wielkie :)

0

Mam wrażenie, że używasz pojęć "klasa" i "obiekt" zamiennie (albo nie rozumiesz działania operatora.). Czym ma być (class,int)?

0

chodziło mi o to co mam w nagłówku.

to jeszcze raz.

Mam tablice obiektów

Klasa klasa[9];
klasa2.metoda(klasa)

i odbieram to tak

metoda(Klasa klasa[])

a w .h mam tak zapisane

metoda(Klasa)

i nie działa

1

Jak widać jesteś początkujący. Nie bierz się za ocenianie, które fragmenty kodu są istotne aby pokazać problem, tylko pokaż najmniejszy kompilujący się (lub nie) testcase.

Zakładam, że metoda(Klasa) to deklaracja, a klasa2.metoda(klasa) to wywołanie (czym jest klasa2? Wypadałoby pokazać).

Jeśli tak jest, to deklarujesz, że funkcja przyjmuje obiekt typu Klasa przez wartość, a próbujesz wywołać z wskaźnikiem (C-tablice bardzo łatwo po kryjomu konwertują się na wskaźnik do ich pierwszego elementu).

0

Ten mój program jest dość zawiły i nie wiem w sumie którą cześć kodu pokazać, żeby było dobrze widać.
To jak mam przekazać tą tablicę przez referencje?

Klasa2 to inna klasa do której chce przekazać tablice Klasy, ale nie wiem jak to zrobić

0

taki bląd się pokazuje

 
Error	C2664	'Warsztat::Warsztat(const Warsztat &)': cannot convert argument 1 from 'Klient [9]' to 'Klient'	 
3
  1. Sposób wymagający najmniej zmian kodu:
    zamień deklarację metody "klasy2" z metoda(Klasa) na metoda(Klasa*). (ew. metoda(Klasa[]) - to dokładnie to samo)
    Tylko skąd będziesz znał rozmiar tablicy?
    1a) dodatkowy parametr:
metoda(Klasa*, int)
  1. używaj std::array zamiast tablic rodem z C - tylko uważaj aby ich nie przekazywać przez wartość
metoda(std::array<Klasa, 24>& arr)
  1. używaj tablic dynamicznych, np. std::vector - tylko znów uważaj, aby ich nie przekazywać przez wartość.
metoda(std::vector<Klasa>& arr)
  1. przekazuj iteratory :)
0

Dzięki wielkie :)

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