задача 1: myVector
должен быть членом класса.Проблема 2: myVector
интересует функции, которые возвращают double и не принимают аргументов, что будет boost::function<double()>
, а затем, чтобы связать _mydouble с параметром foo, вызовите boost::bind(&MyClass::foo, this, MyClass::_mydouble)
, который должен дать вампредупреждение компиляции о приведении double к int для случая, когда вызывается foo.
Самое близкое, что вы можете получить с Boost.Bind, - это возврат в качестве параметра.
#include <iostream>
#include <boost/bind.hpp>
#include <boost/function.hpp>
using namespace std;
class Foo {
int myInt;
double myDouble;
public:
Foo() : myInt(3), myDouble(3.141592) { }
void SetToMyInt(double& param)
{
param = myInt;
}
void SetToMyDouble(double& param)
{
param = myDouble;
}
double Execute()
{
double toReturn = 2;
boost::function<void(double&)> f = boost::bind(&Foo::SetToMyDouble, this, _1);
f(toReturn);
return toReturn;
}
};
int main() {
Foo foo;
std::cout << foo.Execute() << std::endl;
return 0;
}