我正在尝试读取一个看起来像这样的.txt
文件...Rhombus 118.5 112.4 69.9
然后,我尝试使用参数或值Shapes
,118.5
,112.4
初始化69.9
类的构造函数。但是,我收到一个Segmentation Fault (Core Dumped)
错误-我知道它在我的代码中来自哪一行。我只是不知道如何解决...
我的代码如下...
istream& inputpoints(istream &is, Shapes * & shape)
{
string name;
double x, y, z;
if (is >> name) {
if (is >> x >> y >> z) {
*shape = Shapes(x, y, z); // Segementation fault (core dump) happening here
}
}
return is;
}
我相信是导致所有此问题的
*shape = Shapes(x, y, z)
行。如果我没有将*
放在shape
之前,那么我将得到Shapes
不能分配给Shapes*
的错误。如果有人可以在这里帮助我,将不胜感激。
谢谢
最佳答案
几个问题。首先,您是将指向临时(堆栈)对象的指针分配给out参数。
为了获得更好的样式和可读性,请声明函数,使第二个参数是指向ppShapes的指针。
istream& inputpoints(istream &is, Shapes** ppShapes)
{
要解决主要问题,请更改以下行:
*shape = Shapes(x, y, z); // Segementation fault (core dump) happening here
要这样:
*ppShapes = new Shapes(x, y, z);
调用输入点,如下所示:
Shapes* pShapes = NULL;
istream = inputpoints(istream, &pShapes);
关于c++ - 从文件读取后,段错误(核心转储),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33875865/