gpt4 book ai didi

c++ - 不了解如何为源/接收器类逻辑初始化指针

转载 作者:行者123 更新时间:2023-11-30 04:03:46 26 4
gpt4 key购买 nike

将源输出更改为指针后,我开始在调用 GetOutput() 函数时出现段错误。我很确定我没有正确初始化 output。将它初始化为 NULL 正如我目前正在做的那样是行不通的,而且我相当确定它没有任何意义,因为这意味着 output 永远不会拿着任何东西。我想也有可能我只是犯了一个语法错误。因此,对于如何初始化我的 output 的任何想法,我将不胜感激。

// source.c
#include <iostream>
#include <source.h>
#include <stdlib.h>

Source::Source()
{
Image * output = NULL;
output->SetSource(this);
}

Source::~Source() {}

Image * Source::GetOutput() const
{
std::cerr << "This function never executes due to segfault." << std::endl;

output->ResetSize(output->GetWidth(), output->GetHeight());
return output;
}

void Source::Update()
{
Execute();
}


// source.h
#include <image.h>

#ifndef SOURCE_H
#define SOURCE_H

class Image;

class Source
{
public:
Source();
virtual ~Source();
Image * GetOutput(void) const;
virtual void Execute()=0;
virtual void Update();
protected:
Image* output;
};

#endif

最佳答案

下面的代码首先将指针设置为NULL,然后尝试使用它,所以当然会出错。

Image * output = NULL;
output->SetSource(this);

相反,您可以使用 new 关键字对其进行初始化,如下所示:

Image *output = new Image;
output->SetSource(this);

关于c++ - 不了解如何为源/接收器类逻辑初始化指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24196628/

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