我的程序处理访问在类中定义的结构的属性。当我使用 struct 类型的指针来显示结构的属性时,它会引发段错误并停止执行。如果我只使用 struct 类型的变量,它可以很好地打印结构的属性。我尝试使用 gdb
调试代码,它显示段错误发生在第 27 行,即 poly.params->a = 1;
。为什么我们不能在这种情况下使用指针,或者我犯了一个愚蠢的错误?这是代码示例:
#include <iostream>
using namespace std;
class QuadraticFunc
{
public:
QuadraticFunc(){};
struct Coeff
{
double a;
double b;
double c;
} * params;
void ParamShow(const Coeff *params)
{
cout << "a: " << params->a << endl;
cout << "b: " << params->b << endl;
cout << "c: " << params->c << endl;
}
~QuadraticFunc(){};
};
int main()
{
QuadraticFunc poly;
poly.params->a = 1;
poly.params->b = 2;
poly.params->c = 1;
QuadraticFunc *polyPtr;
polyPtr = &poly;
cout << "The parameters for the first object: " << endl;
polyPtr->ParamShow(poly.params);
}
最佳答案
poly.params->a = 1;
params
尚未初始化。
替换
struct Coeff
{
double a;
double b;
double c;
} * params;
与
struct Coeff
{
double a;
double b;
double c;
} params;
然后将每个params->
替换为params.
关于c++ - 由于段错误 :11 程序执行停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54778845/