我有两个类,其中一个是“主”配置,另一个是具有主配置中一些选项子集的辅助配置。“主”配置成员之一是辅助配置对象的向量,用于覆盖主配置选项(如果存在)。我可以将“主”配置get方法绑定到函数,我将这些函数添加到向量中,并在测试中使用它们来获取这些参数(并非每次都测试所有选项,因此我创建了一个集合值向量,该集合值向量与我比较的get方法向量相匹配)
我希望类似地绑定二级配置中的get方法,特别是向量中的最后一个(应该是唯一的)方法,但我不确定如何做到这一点,或者这是否可能。我已经尝试了一些对我来说有意义的调整,但我开始怀疑这对于我正在创建的卷积量是否是一个好主意。如果有人能告诉我我将如何实现这一点,无论是以这样一种方式绑定它,即它从向量中的第一个对象调用所需的方法,还是以另一种方式调用,这就是我要寻找的。下面是我尝试做的一个严重配对的例子。
#include <iostream> #include <vector> #include <functional> using namespace std; class secConfig{ private: double data; public: secConfig(double); double get_data(); }; secConfig::secConfig(double indata){ data = indata; } double secConfig::get_data(){ return data; } class config{ private: std::vector<secConfig> secConfigs; double normalData; public: config(double, vector<secConfig>); double getData(); vector<secConfig> getVecData(); }; config::config(double inData, vector<secConfig> inVec){ normalData = inData; secConfigs = inVec; } double config::getData(){ return normalData; } vector<secConfig> config::getVecData(){ return secConfigs; } int main(int argc, char const *argv[]) { secConfig initial(66.6); vector<secConfig> inConfigs; inConfigs.push_back(initial); cout << "Inconfig raw data: " << initial.get_data() << endl; cout << "Inconfig vector data: " << inConfigs.back().get_data() << endl; config mainConfig(55.5, inConfigs); cout << "Main config raw data: " << mainConfig.getData() << endl; cout << "Main config internal vec data: " << mainConfig.getVecData().back().get_data() << endl; vector<function<double()>> getvals; getvals.push_back(bind(&config::getData, &mainConfig)); cout << "Main config bound data: " << getvals[0]() << endl; // Something like: getvals.push_back(bind(&config::getVecData::back::get_data, &mainConfig)); // So I can: cout << "Secondary (vectorized) config data : " << getvals[1]() << endl; return 0; }