gpt4 book ai didi

c++ - 编译器错误 : failed to bind overloaded function with two arguments

转载 作者:行者123 更新时间:2023-11-30 02:34:33 25 4
gpt4 key购买 nike

我找不到使我的以下代码编译的方法。我正在寻找一种方法来绑定(bind)第一个采用枚举的重载 sn() ,这样我就可以将一个字符串传递给它。我不需要绑定(bind)第二个重载。

#include <iostream>

struct Stats
{
enum AlignMetrics
{
AlignExon,
AlignIntron,
AlignBase
};

// How to bind this function??
inline double sn(const std::string &cID, enum AlignMetrics m) const
{
return 0.0;
}

inline double sn(const std::string &cID, const std::string &id) const
{
return 0.0;
}
};


int main(int argc, const char * argv[])
{
Stats stats;

// Ok (calling directly)
stats.sn("", Stats::AlignMetrics::AlignExon);

// Can't compile (I want to bind it such that it takes only the first argument)
std::bind(static_cast<double (Stats::*)(const std::string &, enum Stats::AlignMetrics)>(&Stats::sn), &stats, std::placeholders::_1, Stats::AlignMetrics::AlignExon);

return 0;
}

最佳答案

你缺少一个const:

std::bind(static_cast<double (Stats::*)(const std::string &, enum Stats::AlignMetrics) const>(&Stats::sn), &stats, std::placeholders::_1, Stats::AlignMetrics::AlignExon);
// ^^^ Missing

简化建议:

double (Stats::*fptr)(const std::string &, enum Stats::AlignMetrics) const = &Stats::sn;
std::bind(fptr, &stats, std::placeholders::_1, Stats::AlignMetrics::AlignExon);

关于c++ - 编译器错误 : failed to bind overloaded function with two arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34487517/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com