请问我该如何使outc()函数正常输出?

#include<iostream>
#include<vector>
using namespace std;

class A{
protected: 
vector<int> a;
public:
A(){};
A(int x){}; 
virtual void outc(){};
};

class B:public A{
public:
B(){};
B(int x){
cout<<x<<endl;
a.push_back(x);
}

void outc(){
for(int i=0;i<a.size();i++)
cout<<a[i]<<" ";


};

int main(){
B(1);
B(2);
B(3);
B(4);
B(5);
B b1;
b1.outc();
return 0;
}

长风秋雁
浏览 89回答 2
2回答

饮歌长啸

B(1);B(2);B(3);B(4);B(5);这是五个不同的实例,所以只是通过cout<<x<<endl;打印了一下b1没有初始化,所以vector里面没有值,outc不会输出任何东西。如果你希望b1.outc能打印出12345,那就意味着不同的实例要共享数据,可以通过把vector声明问static实现。

偶然的你

1 现在代码本来就是能够正常输出!!2 是不是你的预期是想在 b1.outc()的时候输出“1 2 3 4 5 ”??如果是这样:把vector<int> a; 修改为: static vector<int> a;并且在类A后增加一句: vector<int> A::a ;这样能能在b1.outc()的时候输出: 1 2 3 4 5
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java