Wywołanie metody zwracającej wartosc z innej klasy,

0

Mam Klase A, która ma swój konstruktor, oraz klase B, która również ma konstruktor.

W uproszczeniu:

class A
    {
    public:
        int x;
        int y;
        a(int x, int y): x(x), y(y) {}
        int zwroc(int &zmienna)
        {
                return zmienna;
        }
    }; 

i klasę B która wygląda tak:

 class B
    {
    public:
        b(a::zwroc(//zmienna), 5)
    };

tak wywala mi błąd "illegal case of nonstatic member"

wiec wyczytałem że należy utworzyc zmienna obiekt

 class B
    {
    a obiekt;
    public:
        b(obiekt.zwroc(//zmienna), 5)
    };

lecz wtedy, wywala błąd że nie mam domyślnego konstruktora, ale kontruktor klasy a będzie inicjowany dopiero później. Jak to rozwiązaC?

0
  1. Jaki jest sens tej funkcji? Szczególnie że parametr jest przekazany przez referencję, więc nie możesz wywołać zwroc(5).
int zwroc(int &zmienna)
  1. Żeby utworzyć obiekt B, korzystasz z obiektu A, który będzie istnieć dopiero gdy obiekt B istnieje. Kura i jajko. Zgaduję, że raczej miałeś na myśli:
struct A {
    int foo(int x) { return 5 * x; }
};

struct B {
    B(int bar) { cout << bar << endl; }
};

int main()
{
    A a;
    B b(a.foo());
    return 0;
}
0

sensu może i nie ma, bo chciałem zobrazować tylko jako przykład,

ale jak mówiłem, mam w obydwu klasach konstruktory, więc

A a;
B b(a.foo());

nie wywoła, ponieważ mam błąd że klasa A, nie ma domyślnego konstruktora,

więc musiał bym wywołać obiekt z parametrami dla tego konstruktora, a to chce zrobić później.

pytanie więc, jak wywołać metode(zwracajaca wartosc) z klasy( która ma konstruktor) , ale nie ingerować w niego?

0
#include <iostream>
using namespace std;

struct A {
    A(int x, int y) {}
    static int foo(int x) { return 5 * x; }
};

struct B {
    B(int bar) { cout << bar << endl; }
};

int main()
{
    B b(A::foo(7));
    return 0;
}

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