Odwoływanie się do metody innej klasy

Odwoływanie się do metody innej klasy
PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Witam,
mam problem z odwoływaniem się wewnątrz metody jednej klasy do metody innej klasy z innego pliku.
na przykład:

Kopiuj
class A 
{
...
public:
void fun1();
...
}
void A::fun1()
{}

class B
{
...
public:
void fun2();
...
}
void B::fun2()
{
fun1()
} 

Z góry dzięki za pomoc

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
0

Ale co Ty chcesz zrobić? Przecież niestatyczną funkcję składową możesz wywołać tylko na rzecz konkretnego obiektu.

RE
  • Rejestracja: dni
  • Ostatnio: dni
0

Metody (niestatyczne) wywołujesz na rzecz jakiś obiektów. Taki obiekt możesz przekazać np. jako argument metody.

Kopiuj
void B::fun2(const A& a)
{
   a.fun1();
}

...

A a;
B b;
b.fun2(a);
Taumas
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: wlkp
  • Postów: 121
0
Kopiuj
void B::fun2()
{
A* x = new A;
x->fun1();
delete x;
}
hauleth
  • Rejestracja: dni
  • Ostatnio: dni
0
Taumas napisał(a):
Kopiuj
void B::fun2()
{
A* x = new A;
x->fun1();
delete x;
}

To żeś przekombinował. Znacznie łatwiej i mniej błędogennie jest:
void b::fun2() { A().fun1(); }

PA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2
0

Dzięki- sprawdzę wszystkie rozwiązania. i jeszcze jedno pytanie- co zrobić jeśli klasy są w dwóch oddzielnych plikach?

Endrju
  • Rejestracja: dni
  • Ostatnio: dni
0
Pawellos napisał(a):

Dzięki- sprawdzę wszystkie rozwiązania. i jeszcze jedno pytanie- co zrobić jeśli klasy są w dwóch oddzielnych plikach?

Używać plików nagłówkowych (bądź deklaracji zapowiadających) i prawidłowego linkowania.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.