我正在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());
}
然后我创建一个派生类,宣布为:
class test:BaseInfo {
public:
void f();
};
void test::f (test& inf) {
cout<<inf.get_id()<<endl;
}
但我收到了一个错误:
function“BaseInfo :: get_id无法访问。
我很困惑,似乎所有内容都在c ++规则中。
答案 0 :(得分:13)
你正在使用私有继承,这就是原因。 变化:
class test : BaseInfo
为:
class test : public BaseInfo
有关public,protected和private继承的更多信息,请查看here