下一个代码:
//plan.hpp class plan{
public:
plan(int bx,int by):x(bx),y(by){ }
int x;
int y; };
class flower:plan{
public:
flower(int ax,int ay):plan(ax,ay){}
};
//base.hpp
include plan.hpp
include <vector>
class vec{ std::vector<plan> plants;
plants.push_back(flower(x,y));
gnu编译器说:103 54 C:\ Users \ sonera \ Desktop \ osku \ koodaus \ c ++ \ ohjelmat \ FOREST \ simulaattor.hpp [错误]'计划'是'花'无法访问的基础
答案 0 :(得分:2)
应该是
class flower: public plan{
public:
flower(int ax,int ay):plan(ax,ay){}
};
::
运算符表示访问解析运算符 - 编译器正确地说plan
中不存在flower
。
答案 1 :(得分:0)
您需要引用本地包含并在每个包含前添加一个哈希:
#include "plan.hpp"
#include <vector>
答案 2 :(得分:0)
我不认为你在花的类定义中有两个冒号错字
班级花 :: 计划{
是错误消息的原因。
似乎错误消息的原因是您尝试在类花的方法中访问私有数据成员或类计划的成员函数。
问题在于,当您明确指定访问控制时,例如
班级花:公开计划{
然后默认为类的继承是基类的私有。这是类
的以下定义班花:计划{
相当于
班级花:私人计划{
这意味着在课堂花内你只能访问子对象/课程计划的公共成员。
也许你不想要私人继承并且错误地做了。在这种情况下写
班级花:公开计划{
或者使用关键字struct而不是class。对于结构,默认情况下继承是public。