在C++中无法访问的继承函数

Bin*_*Hsu 0 c++

我正在Visual C++ 2010中编写一个小程序.

这是基类的代码:

class BaseInfo {

private:
    std::map <std::string, std::string> info;
    std::vector<std::string> extra_info_key;
public:
    uint get_id ();
    //Other function is hidden
};

uint BaseInfo::get_id () {
    return (uint)atoi ((info["ID"]).c_str());
}
Run Code Online (Sandbox Code Playgroud)

然后我创建一个派生类,宣布为:

class test:BaseInfo {
public:
    void f();
};

void test::f (test& inf) {
    cout<<inf.get_id()<<endl;
}
Run Code Online (Sandbox Code Playgroud)

但是我收到了一个错误:

函数"BaseInfo :: get_id无法访问.

我很困惑,似乎一切都在c ++规则中.

dar*_*mos 13

你正在使用私有继承,这就是原因.更改:

class test : BaseInfo
Run Code Online (Sandbox Code Playgroud)

至:

class test : public BaseInfo
Run Code Online (Sandbox Code Playgroud)

有关public,protected和private继承的更多信息,请查看此处

  • 与成员相同,在结构中,它们默认是公共的,在类中是私有的. (2认同)