gpt4 book ai didi

c++ - 为什么这些类不完整?

转载 作者:太空狗 更新时间:2023-10-29 23:27:56 25 4
gpt4 key购买 nike

我有源.C:

#include "image.h"

#ifndef SOURCE_H
#define SOURCE_H

class Source
{
private:
Image* img;
public:
virtual void Execute()=0;
Image* GetOutput();
};
#endif

Image* Source::GetOutput()
{
return this->img;
}

和一个水槽.C.

#include "image.h"


#ifndef SINK_H
#define SINK_H
class Sink
{
private:
Image* img1;
Image* img2;

public:
void SetInput(Image* input1);
void SetInput2(Image* input2);
};
#endif

void Sink::SetInput(Image* input1)
{
this->img1 = input1;
}

void Sink::SetInput2(Image* input2)
{
this->img2 = input2;
}

我有一个想从 Source 和 Sink 继承的 filter.h:

#include "image.h"
#include <iostream>
#include <stdlib.h>

class Source;
class Sink;

class Filter : Source, Sink
{
public:
Filter() {std::cout << "Constructing filter." << std::endl;}
};

但是,编译器给出了无效使用不完整类型“class Source”和“class Sink”的错误。对于那些相同的类,我也收到前向声明错误。这些类最初在 public 中直接定义了它们的函数,所以我将它们移出,但这并没有帮助。将 Source 和 Sink 明确设置为 public 也无济于事。怎么回事?

最佳答案

#include "sink.h"
#include "source.h"

应该帮你解决。

还有这一行:过滤器类:源、接收器

这是私有(private)继承,这几乎总是您不想要的(您将无法多态地使用该类)。

您可能需要将其更改为

过滤器类:公共(public)源、公共(public)接收器

关于c++ - 为什么这些类不完整?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23823744/

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