抽象类作为参数(接口用例)
Abstract class as argument (interface case)
我有一个抽象类应该是一个接口,像这样:
class IDataSource
{
public:
virtual double getMeThatDouble() = 0;
}
和一些实现,如
class IDataSourceStreamer
{
public:
double getMeThatDouble()
{
//implementation
}
}
关键是我想把它用作其他类的构造函数的初始参数,比如
class DataNeeder
{
public:
explicit DataNeeder(IDataSource);
}
麻烦来了——"parameter of abstract class type is not allowed"
。
我理解它被禁止的特殊原因-使用抽象类本身是不可能的。那我该怎么办呢?是一个类似
的方法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
的东西使用指针。
相关文章:
- 类具有相同的接口,但参数的类型不同
- INET无线接口表模块参数
- C++接口继承不同的参数方法
- 从常量字符*、字符*参数到标准::字符串的直接转换接口
- 使用模板参数化映射旧版 C 接口的接口中的类型
- 如何在 Iaccessible 接口的 accLoacation() 方法中启动参数?
- C++创建具有可变参数模板方法的接口
- 使用类模板参数推导来创建一个静态接口
- C++接口队列或priority_queue作为类的模板参数
- 从 C# 如何调用需要 *VARIANT 参数的非托管 OLE 接口
- 接口描述中接口方法的预定义参数列表
- 如何要求接口中参数的线程安全
- 强制接收实现接口的超类指针作为方法的参数
- 在接口上引用作为参数
- C++对象作为接口方法的参数
- 将泛型结构作为接口中的参数传递
- 使用 ATL 编译 dll,并将方法参数作为接口,但将它们作为 coclass 获取
- 如何在C++中编写类java参数级接口实现
- C++ 以指针作为参数的函数,并使用 swig 接口处理它
- C++:像在 Java 中一样将接口作为参数传递