接口和公共方法
Interfaces and public methods
我有一个结构,我使用一个纯抽象接口(只有公共方法,它们都是=0
的),一个隐藏实现细节的抽象类和两个从它继承的子类。
我想在这些子类中公开一些公共方法,因为它们仅在该上下文中有意义,但将它们标记为公共不起作用,因为编译器似乎只能在接口中看到公共方法。如何使子类中的公共方法可访问?
更新
接口:
class Result {
public:
virtual ~Result() noexcept = default;
protected:
Result() = default;
};
抽象类:
template <typename T>
class AbstractResult : public Result {
public:
AbstractResult();
virtual ~AbstractResult() noexcept = default;
};
第一个孩子:
class AResult : public AbstractResult<PGResult> {
public:
PGResult() = default;
virtual ~PGResult() noexcept = default;
void add_server_status(const char status) noexcept;
void add_command_complete(const CommandComplete command_complete) noexcept;
void add_columns(const vector<Column> columns) noexcept;
void add_error(const Error error) noexcept;
void add_notification(const Notification notification) noexcept;
};
我想创建一个Result
实例并在其上调用编译器禁止的add_columns(...)
:
unique_ptr<Result> result.reset(new AResult);
result->add_columns(...)
在我看来
,当你创建它时,你知道类型,所以在将其分配到unique_ptr
之前把它藏起来:
std::unique_ptr<AResult> temp(new AResult);
temp->add_columns(...);
unique_ptr<Result> result(std::move(temp));
相关文章:
- 类接口,可以创建N个方法
- 如何使用接口指针调用方法,该指针是其具体类的一部分,而不是接口的一部分
- C++接口继承不同的参数方法
- 并发安全堆栈接口方法:正确与否?
- 无法将__str__特殊方法与Boost::Python接口
- Java(或C++)如何处理接口中定义的方法的调用
- 抽象类/接口中的空方法是否被认为是一种好的做法?
- 如何在 Iaccessible 接口的 accLoacation() 方法中启动参数?
- 这是重载提供与非静态成员函数相同接口的静态成员函数的优雅方法吗?
- C++创建具有可变参数模板方法的接口
- 创建接口和混凝土类并在向量中使用它们会导致调用方法时的怪异行为
- 在C 11或更高版本中,是否可以通过Lambda来实现单方法纯Virtual C 接口
- 通过其方法的子集实现接口
- 在没有包装程序类的情况下,在ActiveX接口上调用方法
- C ++类实现接口,接口具有采用任何实现该接口的类的方法
- 正在接口构造函数中调用重写的接口方法
- 接口和公共方法
- 在自定义 C/C++ 程序中获取 PPP0 接口 Tx/Rx 字节的最简单方法是什么?
- 当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
- 接口描述中接口方法的预定义参数列表