c++ - 在派生类中访问基类受保护的数据成员向量给出错误 139
问题描述
它可能已在某处得到回答,但我找不到要搜索的正确单词。
我有基类
class B
{
protected:
std::vector<int> v;
public:
B(): v{} {}
void test()
{
v.push_back( 10 );
std::cout << v[0] << std::endl; // prints 10
}
};
儿童班
class C: public B
{
public:
C() {}
void print() { std::cout << v[0] << std::endl; } // error here
};
主功能
int main()
{
B b;
b.test(); // initialized vector 10
C c;
c.print(); // error 139 here
return 0;
}
如果我在基本构造函数中初始化向量没有错误。
B(): v{ 10 } {}
我不知道为什么?我可能会做一些非常愚蠢的事情, - 帮助我解决错误,我真的很感激。
解决方案
b
并且c
是不同的实例,并且向量v
默认情况下没有任何元素。在这种状态下读取v[0]
是读数超出范围,会导致错误。
该B::test()
函数将某些内容推送到向量,因此调用它将消除此错误。
int main()
{
B b;
b.test(); // initialized vector 10
C c;
c.test(); // call this to have v in c have something
c.print(); // error 139 hear
return 0;
}
推荐阅读
- java - Spring Kafka - 代理重新连接事件
- swift - 为什么快速字符串中的“\ n”在略有不同的情况下表现不同?
- android - 如何将内容从文本文件复制到android中的数据库
- java - android条件语句检查char是否为单引号
- excel - 在一行中特定数量的单元格有内容后,如何取消编辑权限?
- sql - 在某些日期字符串上迭代 SQL 查询
- javascript - 提交 package-lock.json 值得麻烦吗?
- sql-server - 将参数从一个存储过程传递到另一个存储过程
- ionic-framework - 当应用程序在 Ionic 3 的抽屉中时如何更改应用程序导航栏颜色
- python - 是否可以为预训练的 Inception 模型(tensorflow 2.0/Keras)提供 2D 灰度图像?