小编Bon*_*ire的帖子

C++:从重载函数到 std::function 的转换

我有一个 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 包含在代码中。

我该怎么办?我已经尝试使用模板和函数指针解决这个问题,但我没有这样做。

  • 操作系统:Windows 10 64位
  • 编译器:g++ 8.2.0

编辑:这是代码库的简化版本:

no known conversion for argument …
Run Code Online (Sandbox Code Playgroud)

c++ std-function

5
推荐指数
1
解决办法
302
查看次数

C++:是否可以后期初始化类成员函数?

我有以下代码:

#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。如果没有,有哪些替代方案?

c++ class

0
推荐指数
1
解决办法
94
查看次数

标签 统计

c++ ×2

class ×1

std-function ×1