相关疑难解决方法(0)

如何指定指向重载函数的指针?

我想将重载函数传递给std::for_each()算法.例如,

class A {
    void f(char c);
    void f(int i);

    void scan(const std::string& s) {
        std::for_each(s.begin(), s.end(), f);
    }
};
Run Code Online (Sandbox Code Playgroud)

我期望编译器f()通过迭代器类型来解析.显然,它(GCC 4.1.2)没有这样做.那么,我该如何指定f()我想要的?

c++ stl

128
推荐指数
6
解决办法
3万
查看次数

std :: function中带有静态函数的"未解析的重载函数类型"

尝试将重载的静态函数传递给时,我收到"未解析的重载函数类型"错误std::function.

我知道类似的问题,比如这个这个.但是,即使那里的答案用于将正确函数的地址转换为函数指针,它们也会失败std::function.这是我的MWE:

#include <string>
#include <iostream>
#include <functional>

struct ClassA {
  static std::string DoCompress(const std::string& s) { return s; }
  static std::string DoCompress(const char* c, size_t s) { return std::string(c, s); }
};

void hello(std::function<std::string(const char*, size_t)> f) {
  std::string h = "hello";
  std::cout << f(h.data(), h.size()) << std::endl;
}

int main(int argc, char* argv[]) {
  std::string (*fff) (const char*, size_t) = &ClassA::DoCompress;
  hello(fff);
  hello(static_cast<std::string(const char*, size_t)>(&ClassA::DoCompress));
}
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么static_cast隐含的那个不起作用?

c++ function-pointers c++11 std-function

4
推荐指数
1
解决办法
661
查看次数

标签 统计

c++ ×2

c++11 ×1

function-pointers ×1

std-function ×1

stl ×1