【发布时间】:2018-04-12 11:02:43
【问题描述】:
请帮助我理解我在这个过程中做错了什么,这样我就无法访问我的向量“vect”
#include <iostream>
#include <vector>
class A
{
private :
public :
A() {}
};
class B
{
private :
std::vector<A*> vect;
public :
B() {}
void func(){
std::cout << vect.size() <<std::endl;
}
};
class C
{
private :
B* b ;
public :
C() { }
void func (){
b->func();
}
};
int main (){
C c;
c.func();
return 0 ;
}
我希望得到“0”作为输出,但似乎向量尚未被加入,所以我得到不相关的数字“17591314330723”!!!!
【问题讨论】:
-
很幸运,您的程序完全运行,而不是立即崩溃。您能否指出显示代码中将您的类中的
b指针设置为指向当时存在的类B的实例的确切行,并且当它的func( ) 方法被调用? -
启用所有警告的编译优点示例。例如:"warning: 'c.C::b' is used uninitialized in this function".
-
尝试创建一个 B 的实例,这样你就没有未定义的行为
-
你为什么要搞乱指针?
-
@molbdnilo 实际上它只是一个测试代码,我需要在我的原始代码中执行此过程,因为我需要将我的对象向量保留在二级类中。
标签: c++ class pointers object vector