C++ 类成员,它是指向另一个类c++;

C++ 类成员,它是指向另一个类c++;,c++,class,pointers,object,vector,C++,Class,Pointers,Object,Vector,s.one能否帮助我理解在这个过程中我做错了什么,这样我就无法访问我的向量“vect” #包括 #包括 甲级 { 私人: 公众: A(){} }; B类 { 私人: std::vector-vect; 公众: B(){} void func(){ 标准::cout 看看这个类,你可以看到b从来没有被赋值。除此之外,它是一个指针。这意味着当你调用b->func()时,你试图在一个随机的内存块上调用func()。这是未定义的行为,不幸的是它没有崩溃(因为它隐藏了问题) 您的选择是将B分配给一个值,而

s.one能否帮助我理解在这个过程中我做错了什么,这样我就无法访问我的向量“vect”

#包括
#包括
甲级
{
私人:
公众:
A(){}
};
B类
{
私人:
std::vector-vect;
公众:
B(){}
void func(){
标准::cout
看看这个类,你可以看到b从来没有被赋值。除此之外,它是一个指针。这意味着当你调用
b->func()
时,你试图在一个随机的内存块上调用
func()
。这是未定义的行为,不幸的是它没有崩溃(因为它隐藏了问题)


您的选择是将B分配给一个值,而我不解释如何做;您的C++书应该覆盖它;或者将它改为不是指针;(即删除<代码> */COD>)当你创建一个C时,它将为你创建一个新的B。

你很幸运,你的程序运行了,而不是立即崩溃。你能告诉我所示代码中设置类中
B
指针的那一行,它指向类
B
的一个实例,该实例当时存在,当我ts
func
()方法被调用?这是一个在启用所有警告的情况下编译的优点示例。例如:。尝试创建一个B实例,这样您就不会有未定义的行为。为什么要乱搞指针?@molbdnilo实际上这只是一个测试代码,我需要在我的原始代码中执行此过程,因为我需要在那里保留我的向量二级类中的对象。
#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 ;

}
class C 
{
private :
    B* b ;

public :
    C() { }
    void func (){
        b->func();
    }
};