访问指针类成员变量c ++时的运行时错误

时间:2014-10-30 19:41:22

标签: c++ crash polymorphism runtime member

我在通过指针访问成员变量时遇到问题。指针是静态列表,通过多态将指向继承类。

这是A类及其继承者,以及ctors:

class A
{
    public:

        A();

        char letter;

};

class B: public A
{
    public:
        B();
};

A::A()
{
    letter = 'a';
}

B::B()
{
    letter = 'b';
}

class Display创建一个A类的静态数组并设置值:

class Display
{
    public:

        Display();

        static A* aList;

        A a;
        B b;

};

A* Display::aList = nullptr;

Display::Display()
{

    aList = &b;

}

Class App使用数组来显示字母:

class App
{
    public:

        App()
        {
            std::cout << Display::aList->letter << endl;
        }

};

主要文件运行App的ctor

main()
{
   App app;
}

程序在运行时崩溃。

为什么?

1 个答案:

答案 0 :(得分:0)

所以我原来问题的问题是我试图通过静态对象列表访问的类成员布尔值未被指向。

运行时崩溃:

cout << A::staticList[5]->n << endl;

工作方式:

if( cout << A::staticList[5] != nullptr )
{
    cout << A::staticList[5]->n << endl;
}