简体   繁体   English

使用组合或朋友类将其他类的成员函数访问到`this`类的成员函数中

[英]Accessing member functions of other classes into member function of `this` class using composition or friend classes

I am writing a class using 'composition' as follows - 我正在使用'composition'编写一个类,如下所示 -

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();
    }
}

Here, FibonacciDynamic , FibonacciRecursive & FibonacciSequential are classes declared in header files. 这里, FibonacciDynamicFibonacciRecursiveFibonacciSequential是在头文件中声明的类。 Now, the main problem here is that while using se.fib() , re.fib & dy.fib() functions it gives me error like 现在,这里的主要问题是,在使用se.fib()re.fibdy.fib()函数时,它给出了我的错误

error C2228: left of '.fib' must have class/struct/union

Is there any other way to use composition approach here without getting above errors? 在没有出现上述错误的情况下,有没有其他方法可以使用合成方法?

If not then is it possible to use them as friend classes & access their member functions in a member function of fibonacci class? 如果没有,那么是否可以将它们用作朋友类并在fibonacci类的成员函数中访问它们的成员函数?

Thanks. 谢谢。

FibonacciDynamic dy(); FibonacciDynamic dy(); is declaration of method FibonacciDynamic fibonacci::dy(); 是方法的声明FibonacciDynamic fibonacci :: dy();

you should remove parentheses to make it data member declaration: 你应该删除括号,使其成为数据成员声明:

...
FibonacciDynamic dy;
...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM