以下是我写的这个有2个变量的类,创建对象的方式是通过文件
class CData {
int m_iTimeID;
double m_dData;
friend istream& operator>>(istream& IS, CData* Obj){
Obj = new CData();
IS >> Obj->m_iTimeID >> Obj->m_dData;
return IS;
}
它应该是一个指针(我相信)
现在有另一个类,其变量是第一个类
的指针向量 class CCalc3SigmaControl {
vector<CData*> m_vectorData;
正在从文件读取数据的构造函数(这是我的问题所在的地方)
CCalc3SigmaControl(const char* filename){
ifstream FP(filename);
istream_iterator<CData*> begin_itt (FP);
istream_iterator<CData*> end_source ;
copy(begin_itt,end_source ,back_inserter(m_vectorData));
}
我的任务是使用此部分中的复制算法!
现在,所有这些编译并运行程序,但是当它到达我试图从向量中获取数据的部分时(比如这个m_vectorData [i] - &gt; getData();)它返回一个错误它无法获取数据&#34;访问冲突读取位置0xCCCCCCD4。&#34;并且在m_dData和ID中它是&#34;无法读取内存&#34;。
现在我在副本上设置了一些断点,并且重载了&gt;&gt; 。操作员从文件中获取数据,但是当程序进入副本时,我的begin_itt指向没有值,并且它不向向量分配任何内容(只是推回空对象或GUESS的东西)。 我需要这个副本才能工作!
void calcSigmas(){
sigmaUp=0; //a private of CCalc3SigmaControl
sigmaDown=0; //also
double Mean = 0;
double n = m_vectorData.size();
for (int i=0;i<n;i++){
Mean = Mean + m_vectorData[i]->getData();
}
sigmaUp = Mean + 3 * sqrt (abs((Mean * (1 - Mean))/n));
sigmaDown = Mean - 3 * sqrt (abs((Mean * (1 - Mean))/n));
}
(CData中的getData函数:
double getData() const { //GET DATA
return m_dData;}
)
有。在我的主要功能中,我有:
void main(){
CCalc3SigmaControl A("Danni.txt");
A.calcSigmas();
当它试图计算它们时会得到错误。 这就是它。我已经超载了&lt;&lt;&lt;&lt;&lt;在ccalc中,我可以在主要数据中输入数据。