0 c++
当我尝试运行代码时编译器崩溃,我找不到问题.
我收到这个错误:0xC0000005: Access violation reading location 0x00000000.所以它必须是一个指针错误.
但我似乎无法弄清楚我做错了什么.所以,如果有人可以帮助我,我将非常感激.
classB.ccp
ClassB::ClassB(ClassC *CPtr, int x)
{
ClassC *CPtr_ = CPtr;
x_ = x;
}
void ClassB::print() const
{
CPtr_->print();
std::cout << x_ << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
ClassC.ccp
ClassC::ClassC(int y)
{
y_ = y;
}
void ClassC::print() const
{
std::cout << y_ << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
主要
ClassC myCObject(7);
ClassB myBObject(&myCObject , 11);
myBObject.print();
Run Code Online (Sandbox Code Playgroud)
在类的构造函数中,ClassB您将参数值存储CPtr在局部变量中 CPtr_.你为什么这么做?
显然,这个想法是存储在数据成员CPtr_中ClassB.然而,由于一些无法解释的原因,您决定在构造函数中声明一个具有相同名称的局部变量.由于该额外变量,数据成员保持未初始化(包含垃圾),并且当您尝试取消引用它时代码崩溃.