Доступ к функциям-членам других классов в функцию-член класса `this` с использованием классов Composition или Friend
Я пишу класс, используя "состав" следующим образом -
class fibonacci
{
private:
FibonacciDynamic dy();
FibonacciRecursive re();
FibonacciSequential se();
int count;
public:
fibonacci(int a):count(a){};
void disp();
};
void fibonacci::disp()
{
if(count < 20)
{
se.fib();
}
else if(count < 50)
{
re.fib();
}
else
{
dy.display();
}
}
Вот, FibonacciDynamic
, FibonacciRecursive
& FibonacciSequential
классы, объявленные в заголовочных файлах. Теперь главная проблема заключается в том, что при использовании se.fib()
, re.fib
& dy.fib()
функции это дает мне ошибку, как
error C2228: left of '.fib' must have class/struct/union
Есть ли другой способ использовать композиционный подход здесь без ошибок выше?
Если нет, то возможно ли использовать их как дружественные классы и получать доступ к их функциям-членам в функции-члене fibonacci
учебный класс?
Благодарю.
1 ответ
Решение
FibonacciDynamic dy(); является объявлением метода FibonacciDynamic fibonacci::dy();
Вы должны удалить скобки, чтобы сделать это декларацией члена данных:
...
FibonacciDynamic dy;
...