gpt4 book ai didi

c++具有每个实例化对象的特定功能的结构(或类)

转载 作者:行者123 更新时间:2023-11-30 04:25:54 24 4
gpt4 key购买 nike

我需要实现一个结构(或类),其中每个实例都有一个指向特定函数的“指针”。这可能吗?

像这样:

struct constrain{

string name;
int direction;
double evaluate (vector <double> &x_var);
};

evaluate“指向”特定函数,这样当我创建我的constrain 对象时,我可以告诉对象方法evaluate 应该指向,当我以后使用它时(例如,我的 constrain 对象将包含在 std::vector 中)我可以调用特定的函数。

最佳答案

考虑使用std::function:

struct Foo
{
std::function<double (std::vector<double>)> func;
};

最好按照 pmr 的建议通过引用传递 vector。这是完整的示例:

#include <iostream>
#include <vector>
#include <functional>

struct Foo
{
std::function<double (const std::vector<double> &)> func;
};

static double calc(const std::vector<double> &params)
{
return 10.0;
}

int main()
{
Foo f;
f.func = calc;

std::vector<double> v;
std::cout << f.func(v) << std::endl;

return 0;
}

如果您的STL 实现没有std::function,请考虑使用boost::function

关于c++具有每个实例化对象的特定功能的结构(或类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11879363/

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