我有两个类,一个Measurement
包含 a的类vector<double>
和一个Experiment
包含 a 的类vector<Measurement>
:
class Measurement {
private:
vector<double> dataSet;
string time_stamp;
public:
const vector<double>& getDataSet() {return dataSet;}
string getTimeStamp() {return time_stamp;}
};
class Experiment {
private:
vector<Measurement> measurements;
public:
const vector<Measurement>& getMeasurements() {return measurements;}
};
简而言之,我试图遍历(外循环)中Measurement
的Experiment
每个,然后遍历每个Measurement
(内循环)中的数据。
我在这个线程上找到了一些帮助,这就是为什么成员函数getDataSet()
和getMeasurements()
是const &
(使迭代器兼容)。
但是,当我尝试打电话时iter_meas->getDataSet()
,我遇到了麻烦。
int main() {
Experiment expTest(); // experiment already filled with measurements
vector<Measurement>::const_iterator iter_meas;
vector<double>::const_iterator iter_data;
for (iter_meas = expTest.getMeasurements().begin(); iter_meas != expTest.getMeasurements().end(); iter_meas++) {
cout << iter_meas->getTimeStamp() << ','; //this works fine :)
for (iter_data = iter_meas->getDataSet().begin(); iter_data != iter_meas->getDataSet().end(); iter_data++){
// ^^^ here I get the error
// "the object has qualifiers that are not compatible with the member function getDataSet"
// "object type is const measurement"
cout << iter_data << ",";
}
cout << '\n';
}
return 0;
}
我知道它iter_meas
代表 a const Measurement
,但我不确定为什么我不能Measurement::
在它上面调用成员函数?
我正在使用 Visual Studio 社区 2015。