-2
部分除我的先前的問題C++: Pointer to composite class data member:指針複合類數據成員 - 2
對不起,不具有描述了我的需求。在我看來,解釋有點複雜。但是,如問,請在下面簡單描述我的問題。
我想創建一個從XML自動填充的參數類。
爲此,我將該參數類的每個數據成員添加到指向與其XML標記名稱關聯的成員的指針向量中。
在讀取XML的過程中,所有標記名都從XML中讀取,並且所有參數的值都會更新。
我還沒有找到任何方法來聲明我的類的「stParam1.fVal1」成員的成員指針(請參閱下面的註釋行)。
我該如何聲明一個指向類結構的成員指針?
class XmlReader
{
public :
struct ST_PARAM
{
float XmlReader::*ptrFloat;
string tagName;
};
void addAttribut(float XmlReader::* pfMembre, string& tagName) {
ST_PARAM stParam;
stParam.ptrFloat = pfMembre;
stParam.tagName = tagName;
_tstParams.push_back(stParam);
}
void ReadParameters(string& fileName){/*...*/} // Read Xml File and update all parameters in _tstParams
private:
vector<ST_PARAM> _tstParams;
};
class Param : public XmlReader
{
public:
Param() {
addAttribut((float XmlReader::*)&Param::fVal1, string("XML_TAG_NAME_1")); // OK
addAttribut((float XmlReader::*)&Param::fVal2, string("XML_TAG_NAME_2")); // OK
// addAttribut((float XmlReader::*)&Param::stParam1.fVal1, string("XML_TAG_NAME_3")); // DON'T WORK -> Syntax is invalid
//...
}
// Some more complex parameters types
typedef struct
{
float fVal1;
float fVal2;
}ST_PARAM_1;
//...
// Declaration of several parameters
ST_PARAM_1 stParam1;
F32 fVal1;
F32 fVal2;
//...
};
void test()
{
Param myParam;
myParam.ReadParameters(string("Parameters.xml"));
}