Доступ к функциям-членам других классов в функцию-член класса this с использованием классов Composition или Friend.

0

Я пишу класс, используя "композицию" следующим образом:

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 функции класса fibonacci?

Благодарю.

  • 1
    «se» должно быть объектом. FibonacciSequential se = new FibonacciSequential ()
  • 0
    Благодарю. Это полезно. Я должен сначала написать конструкторы по умолчанию.
Показать ещё 1 комментарий
Теги:
composition
friend-class

1 ответ

2
Лучший ответ

FibonacciDynamic dy(); является объявлением метода FibonacciDynamic fibonacci :: dy();

вы должны удалить круглые скобки, чтобы сделать его декларацией члена данных:

...
FibonacciDynamic dy;
...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню