Моя программа имеет дело с доступом к атрибутам структуры, которая определена внутри класса.Когда я использую указатель типа 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);
}