Я пишу класс, используя "композицию" следующим образом:
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
?
Благодарю.
FibonacciDynamic dy(); является объявлением метода FibonacciDynamic fibonacci :: dy();
вы должны удалить круглые скобки, чтобы сделать его декларацией члена данных:
...
FibonacciDynamic dy;
...