c++ - 仅当函数存在时才调用类中的成员函数
问题描述
是否可以检查一个类是否有成员函数,如果存在则调用该函数?
这是我正在尝试做的一个例子:
class class1 {
public:
static YAML::Node getYAML() {
// Returns a YAML::Node
}
}
class class2 : public class1 {
// Inherits getYAML()
}
class class3 {
// Does not have getYAML()
}
int main() {
YAML::Node node1 = class1::getYAML()
YAML::Node node2 = class2::getYAML()
YAML::Node node3 = class3::getYAML()
}
在此示例中,对 class1 和 class2 的调用将成功调用 getYAML。只要以后有某种方法可以检测到调用失败(例如 node3 为空),对 class3 的调用会发生什么并不重要。
编辑:我正在寻找 SFINAE 的答案。我知道我想做的事情很奇怪,但我有某些情况需要我这样做。
下面链接的另一个线程描述了如何检查函数是否存在。但是,它没有给出如何调用该函数的答案。
我不确定我使用的是什么 c++ 版本,但我的 g++ 编译器版本是 4.9.3
解决方案
推荐阅读
- python - 在python中,关键字“from”是什么意思
- sass - 如何配置 create-react-app 以将 CSS 导出到两个不同的文件中
- html - 如何将 HTML 标签添加到 UITextView Swift Xcode 中的字符串
- sql - 计算给定日期当月的总工作日数和经过的工作日数
- nginx - 上游响应被缓冲到 nginx 上的临时文件中是什么限制了内存?
- linux - 在文件夹 vsftpd 上不显示任何内容
- python - 多对多关系的SQLAlchemy问题
- java - 不要将空对象包括给杰克逊
- java - ANTLR4 Swift 语法无法识别 for-in 语句
- ios - 使 Facebook 用户能够发帖