我有一个 C++ 函数,它接受另外两个函数作为参数:
// ParseResult is a class with a default constructor (no arguments)
ParseResult* bin_op(std::function<ParseResult*()> func_a, std::vector<std::string> ops, std::function<ParseResult*()> func_b);
Run Code Online (Sandbox Code Playgroud)
当我按以下方式调用此函数时:
bin_op(func_1, {"MOD"}, func_2);
// Both func_1 and func_2 are of type ParseResult*, and take in no parameters
Run Code Online (Sandbox Code Playgroud)
编译器抛出这个错误:
no known conversion for argument 1 from '<unresolved overloaded function type>' to 'std::function<ParseResult*()>
Run Code Online (Sandbox Code Playgroud)
我的代码编辑器显示:
no suitable constructor exists to convert from "ParseResult *()" to "std::function<ParseResult *()>"
Run Code Online (Sandbox Code Playgroud)
std::function
包含在代码中。
我该怎么办?我已经尝试使用模板和函数指针解决这个问题,但我没有这样做。
编辑:这是代码库的简化版本:
no known conversion for argument …
Run Code Online (Sandbox Code Playgroud) 我有以下代码:
#include <iostream>
class First {
public:
Second* x;
void make_value(Second* sec_);
First() {
// Initialization
}
};
class Second {
public:
First* y;
Second() {
// Initialization
}
};
void First::make_value(Second* sec_) {
x = sec_;
}
void main() {
fir = new First();
sec = new Second();
fir->make_value(sec);
}
Run Code Online (Sandbox Code Playgroud)
这两个类每个都有另一个类的成员变量,由于显而易见的原因它不起作用。
我的问题是是否有一种方法可以x
在类初始化后后期初始化变量Second
。如果没有,有哪些替代方案?