0
我有此小的類,圍繞單個雙可變C++傳遞的類實例如浮點變量在libconfig ++ :: lookupValue()
class SensorTrainData
{
public:
SensorTrainData() : trainingRangeFactor(2.0f) {}
SensorTrainData(const double & _factor) { setFactor(_factor); }
SensorTrainData & operator=(const double& other)
{
setFactor(other);
return *this;
}
operator double() const
{
return getFactor();
}
private:
void setFactor(const double & factor);
const double & getFactor() const { return trainingRangeFactor; }
double trainingRangeFactor;
};
這些用戶功能double()
和操作者圍繞「=」過載允許我做分別
SensorTrainData std(3.0f);
double d = std;
double k = 4.0f;
std = k;
我使用libconfig++
,我希望能夠直接傳遞變量std
在libconfig::lookupValue("varName" , std)
爲了挑選值「varName的」,這是從配置(文本閱讀)文件。
不幸的是,編譯器說我無法通過SensorTrainData &
。
src/sensor.cpp:1048:45: error: no matching function for call to ‘libconfig::Setting::lookupValue(const char [12], enalu::SensorTrainData&) const’
src/sensor.cpp:1048:45: note: candidates are:
...
....
/usr/include/libconfig.h++:255:8: note: bool libconfig::Setting::lookupValue(const char*, double&) const
/usr/include/libconfig.h++:255:8: note: no known conversion for argument 2 from ‘enalu::SensorTrainData’ to ‘double&’
當然
我可以做
double foo = 0.0f;
libconfig::lookupValue("varName" , foo); //load varName from file into foo
std = foo;
但我想,以避免額外的輸入和代碼行等
有一個操作符重載招我可以用它來做到這一點?
謝謝