私有方法实现编译错误

时间:2015-03-27 22:54:05

标签: c++ oop

我有T级

class T
    {
       public:
       .
       .
       private:
       void foo();
    }

void T::foo()
{
    .. foo body
}

当我尝试编译时我得到了 错误:void T::foo()是私有的

我应该如何实现私有方法?

1 个答案:

答案 0 :(得分:1)

私有方法只能在类中使用。

私人,受保护和公众之间的区别? https://isocpp.org/wiki/faq/basics-of-inheritance#access-rules

如果你想在外面使用它,那么你必须公开它。这是一个关于私人和公共成员的简单例子

#include <iostream>

class T
{
    void bar()
    {
        cout << "Private! Can only be accessed within the class";
    }

    public:
        void foo()
        {
            std::cout << "hello world!"; 
        }
};

int main() {
    // your code goes here
    T testT;

    //testT.bar();      <--uncomment this and you will get the error: 'void T::bar()' is private
    testT.foo();
    return 0;
}

您可能还想了解朋友的概念。如果函数被声明为T类的朋友,它可以访问私有foo()。

此处有更多详情:http://www.cplusplus.com/doc/tutorial/inheritance/