gpt4 book ai didi

c++ - Segmentation Fault (Core Dumped) 从文件读取后

转载 作者:行者123 更新时间:2023-11-28 05:57:26 25 4
gpt4 key购买 nike

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

菱形 118.5 112.4 69.9

然后我尝试使用参数或值 118.5112.469.9< 为 Shapes 类初始化我的构造函数。但是,我遇到了 Segmentation Fault (Core Dumped) 错误 - 我知道它来 self 的代码中的哪一行。我只是不知道如何解决它...

我的代码如下...

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 can't be assigned to Shapes* 错误。

如果有人能帮助我,我将不胜感激。

谢谢

最佳答案

几个问题。首先,您将指向临时(堆栈)对象的指针分配给输出参数。

为了更好的风格和可读性,声明您的函数,使第二个参数是指向 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++ - Segmentation Fault (Core Dumped) 从文件读取后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com