gpt4 book ai didi

c++ - 抽象类作为参数(接口(interface)案例)

转载 作者:行者123 更新时间:2023-11-30 00:36:34 36 4
gpt4 key购买 nike

我有一个应该是接口(interface)的抽象类,如下所示:

  class IDataSource
{
public:
virtual double getMeThatDouble() = 0;
}

还有一些实现,比如

 class IDataSourceStreamer
{
public:
double getMeThatDouble()
{
//implementation
}
}

关键是我想在其他类的构造函数中将它用作初始参数

class DataNeeder
{
public:
explicit DataNeeder(IDataSource);
}

问题来了 - “不允许使用抽象类类型的参数”

我知道出于特殊原因它是被禁止的——单独使用抽象类是不可能的。所以我该怎么做?是像

这样的方法
IDataSource.FeedThat(DataNeeder)

唯一的选择?有点丑。

最佳答案

您需要将抽象类型作为引用或指针传递。例如:

class DataNeeder {
public:
explicit DataNeeder(IDataSource &source) : source_(source) {
}

void someMethod() {
double x = source_.getMeThatDouble();
// ...
}

private:
IDataSource &source_;
}

然后就可以让DataNeeder的成员函数对source_进行操作了。正如我提到的,您也可以为此任务使用指针,但我喜欢只对“OUT”参数和可以想象为 NULL 的东西使用指针。

关于c++ - 抽象类作为参数(接口(interface)案例),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15794486/

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