繁体   English   中英

我如何获得一个类成员函数来访问另一个类成员函数的私有成员?

[英]How do i get a class member function to have access to another class member function's private member?

我的问题是我试图获得一个类成员函数,以访问另一个类的私有成员变量。 我已将类成员函数声明为该类的朋友,但编译器继续告诉我该变量不可访问。 这是代码:

    #include <iostream>

    using namespace std;
    class Numbers2;

    class Numbers
    {
    private:
        int num;
    public:
        Numbers(){num = 0;};
        friend void Numbers2::getNumbers(Numbers &);

    };

    class Numbers2
    {
    private:

    public:
        void getNumbers(Numbers &);
    };

    void Numbers2::getNumbers(Numbers &numbs)
        {
            cout << numbs.num << endl; //Right here is where the compiler 
                                       //leads me and tells me the variable
        };                             // is inaccessible

    int main()
    {
        Numbers num1;
        Numbers2 num2;

        num2.getNumbers(num1);


        system ("Pause");
        return 0;
    }

我将不胜感激任何帮助,谢谢!

您没有阅读所有错误消息。 您只读过一个说int成员不可访问的消息 ,但是上面的消息告诉您原因

main.cpp:12:51: error: invalid use of incomplete type 'class Numbers2'
         friend void Numbers2::getNumbers(Numbers &);
                                                   ^
main.cpp:4:11: error: forward declaration of 'class Numbers2'
     class Numbers2;
           ^
main.cpp: In member function 'void Numbers2::getNumbers(Numbers&)':
main.cpp:9:13: error: 'int Numbers::num' is private
         int num;
             ^
main.cpp:25:27: error: within this context
             cout << numbs.num << endl;
                           ^

出现这些最终错误仅是因为第一个错误导致整个friend声明失败。 因此,这是您需要修复的第一个错误。

看,您不能在那里引用Numbers2::getNumbers ,因为Numbers2仅在那时被向前声明:编译器对其中的一个名为getNumbers的函数一无所知!

相反,把定义Numbers2 上文定义的Numbers ,和前瞻性声明Numbers

现场演示

暂无
暂无

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

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