我正在尝试读取一个看起来像这样的.txt文件...

Rhombus 118.5 112.4 69.9

然后,我尝试使用参数或值Shapes118.5112.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/

10-11 00:32