Доступ к функциям-членам других классов в функцию-член класса `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;
...
Другие вопросы по тегам