我正在为一个类项目工作,我正在使用类和类类型的指针来调用类中的一些函数,但它在代码块和 Eclipse 上崩溃,我不知道发生了什么 请注意,当用 y 分配 x 时它会崩溃
#include <iostream>
using namespace std;
class a{
private:
int x;
public:
void set_X(int y){
x=y;
}
};
int main()
{
a *Ptr;
Ptr->set_X(5);
}
最佳答案
a *Ptr; Ptr->set_X(5);
您的 Ptr
没有指向任何东西。尝试在未初始化的指针上调用成员函数会导致未定义的行为。崩溃只是可能发生的许多或多或少的随机事件之一。
幸运的是,在您的示例中,您根本不需要指针。你可以简单地写:
a my_a;
my_a.set_X(5);
指针通常指向动态分配的对象。如果这是您想要的,您必须相应地使用 new
和 delete
:
a *Ptr = new a;
Ptr->set_X(5);
delete Ptr;
在现代 C++ 中,std::unique_ptr
通常是更好的选择,因为您不必手动释放分配的内存,这消除了许多潜在的编程错误:
auto Ptr = std::make_unique<a>();
Ptr->set_X(5);
// no delete necessary
关于c++ - 从类调用函数时箭头 '->' 分隔符崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34543938/