gpt4 book ai didi

c++ - std::binary_function - 调用不匹配?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:40:47 28 4
gpt4 key购买 nike

包括

#include <functional>

using namespace std;

int main() {
binary_function<double, double, double> operations[] = {
plus<double>(), minus<double>(), multiplies<double>(), divides<double>()
};
double a, b;
int choice;
cout << "Enter two numbers" << endl;
cin >> a >> b;
cout << "Enter opcode: 0-Add 1-Subtract 2-Multiply 3-Divide" << endl;
cin >> choice;
cout << operations[choice](a, b) << endl;
}

我得到的错误是:

Calcy.cpp: In function ‘int main()’:
Calcy.cpp:17: error: no match for call to ‘(std::binary_function<double, double, double>) (double&, double&)’

谁能解释为什么我会收到此错误以及如何消除它?

最佳答案

std::binary_function 仅包含参数和返回类型的类型定义。它从未打算充当多态基类(即使是,您仍然会遇到切片问题)。

作为替代方案,您可以像这样使用 boost::function(或 std::tr1::function):

boost::function<double(double, double)> operations[] = {
plus<double>(), minus<double>(), multiplies<double>(), divides<double>()
};

关于c++ - std::binary_function - 调用不匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2567980/

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