C++ 分段错误(代码转储)

C++ 分段错误(代码转储),c++,linux,qt,C++,Linux,Qt,我创建了下面描述的两个文件 csvreport.h int flag = 0; //declared && defined 表1.cpp csvreport* csvreports; csvreports->flag = 1; 显示分段故障(代码转储) 任何人都可以给出解决方案???您正试图使用已声明但未初始化为指向任何有效对象的指针来访问对象的成员。这就是未定义行为的原因 在尝试访问该类型的成员之前,首先为该对象分配内存 csvreport* csvreports

我创建了下面描述的两个文件

csvreport.h

int flag = 0; //declared && defined
表1.cpp

csvreport* csvreports;
csvreports->flag = 1;
显示分段故障(代码转储)

任何人都可以给出解决方案???

您正试图使用已声明但未初始化为指向任何有效对象的指针来访问对象的成员。这就是未定义行为的原因

在尝试访问该类型的成员之前,首先为该对象分配内存

csvreport* csvreports = new csvreport; // or new csvreport[array_size]
csvreports->flag = 1;

csvreport*csvreports创建未初始化的指针。尝试使用未初始化的指针会导致未定义的行为

在堆栈上创建此变量(不带指针):

csvreport csvreports;
或者,如果需要指针,请先分配它:

csvreport* csvreports = new csvreport;
csvreports->flag = 1;
或通过现代C++11方式使用唯一指针:

auto csvreports = std::make_unique<csvreport>();
csvreports->flag = 1;
auto csvreports=std::make_unique();
csvreports->flag=1;
在此代码中

csvreport* csvreports;
csvreports->flag = 1;

cvsreports
仅声明为指针;没有为它分配指向的内存。

请提供一个mcve:undefined引用到'CSVReports::CSVReports()'@girdharial,这是一个完全不同的问题。为此创建另一篇文章,带有。我使用了您的解决方案,但它显示了以下错误:未定义对“CSVReports::CSVReports()”的引用@RSahu@GirdhariLal,我明白。我重复一遍。这是一个完全不同的问题。为此创建另一篇文章,引用.undefined到'CSVReports::CSVReports()'@girdharial,我的示例假设您有默认构造函数。如果不是这种情况,则为构造函数提供必要的参数,或定义默认参数。