【发布时间】:2016-07-20 01:01:11
【问题描述】:
我试图从一个对象的引用创建一个 boost::any,并在 boost::any_cast 之后在给定的方法内更改它。但调用后对象保持不变。这是我正在尝试的一个简单示例:
class Base
{
public:
template<typename T>
void method(T& data)
{
methodImpl(boost::any(data));
}
protected:
virtual void methodImpl(boost::any& data) = 0;
};
class Derived : public Base
{
private:
void methodImpl(boost::any& data)
{
Parameter& param = boost::any_cast<Parameter&>(data);
// Change param attributes...
}
};
int main()
{
Derived derived;
Parameter param;
derived.method(param);
// param hasn't changed...
}
有没有一种简单的方法可以让它工作,还是我必须使用 boost::ref 和 boost::reference_wrapper?
【问题讨论】:
标签: c++ boost reference type-erasure any