【发布时间】:2021-12-27 17:20:22
【问题描述】:
在使用 boost::variant 时,我不断收到错误提示“没有匹配的函数调用”。 下面是我的代码 sn-p。
struct Output {
int a;
float b;
}
typedef boost::variant<ClassA<X, Y>, ClassA<>> ClassAGeneric;
class Operation: public boost::static_visitor<Output>
{
public:
double d;
int a;
float b;
Output operator()(ClassA<X, Y> obj) const
{
obj.operate(d, a, b);
return (Output) {a, b};
}
Output operator()(ClassA<> obj) const
{
obj.operate(d, a, b);
return (Output) {a, b};
}
};
我在定义的 first operator() 中的 obj.operate() 调用中遇到此错误。
我尝试过传递模板,就像另一个答案中提到的那样,但我仍然看到一个错误。
obj.operate<X,Y>(d,a,b);
有人可以帮我解决这个问题吗?
我也可以在这里给出确切的场景:
struct Output{
Row<size_t> predictions;
mat probabilities;
};
typedef boost::variant<RandomForest<GiniGain, RandomDimensionSelect>, RandomForest<>> RandomForestGeneric;
class Operation: public boost::static_visitor<Output>
{
public:
mat dataset;
Row<size_t> predictions;
mat probabilities;
Output operator()(RandomForest<GiniGain, RandomDimensionSelect> obj) const
{
obj.Classify(dataset, predictions, probabilities);
return (Output) {predictions, probabilities};
}
Output operator()(RandomForest<> obj) const
{
obj.Classify(dataset, predictions, probabilities);
return (Output) {predictions, probabilities};
}
};
【问题讨论】:
标签: c++ boost variant boost-variant mlpack