這似乎非常非常複雜,我嘗試了很多解決方法,但是當我調整模板/類中的私有成員時,即當我調用Operator :: InitExtVector,我通過它的地址調整intVect大小,當我顯示/調用Operator :: ShowExtVector時,它的大小再次爲0,這不應該發生。爲什麼矢量信息丟失了?處理另一個類的2個函數中的一個類的向量
我有一個模板/類,Base.H:
#include <vector>
typedef std::vector <unsigned long int > varVect1D_ul;
<template <typename PS>
class Base{
private:
PS bla;
varVect1D_ul intVect;
public:
varVect1D_ul* dataVect(){return &intVect}
}
一些操作在操作類中完成的,正常的沒有模板,Operator.H:
class Operator{
public:
.....
private:
void InitExtVector(std::vector <Base<float> > BaseVect){
varVect1D_ul *pVect;
for(i=0...BaseVect.size()){
pVect=dataVect();
pVect->resize(10);
}
} // end InitExtVector
void ShowExtVector(std::vector <Base<float> > BaseVect){
varVect1D_ul *pVect;
for(i=0...BaseVect.size()){
pVect=BaseVect[i].dataVect();
cout<<pVect->size();
}
}//end ShowExtVector
}; //end class
,和客戶端代碼如下所示 someOperations.C:
#include "Base.H"
#include "Operator.H"
foo(){
std::vector <Base<float> > BaseVect(2);
//do some initization of BseVect;
Operator *ObjOper= new Operator;
ObjOper->InitExtVector(BaseVect);
ObjOper-> ShowExtVector(BaseVect);
}
所有語法是好的,地址裏面InitExtVect和ShowExtVector pVect的是相同的
任何幫助將非常樂意讚賞
方面
JORR
我爭辯說,所有語法都可以,因爲你說' class ...'。無論如何,你真的想要做什麼?也許有一個現成的數據結構可以完成這項工作。 –
-1不是真實的代碼。 「for(i = 0 ... BaseVect.size())」無效C++。 –
-1不是真正的代碼,語法是** not **'okay':「foo()」不是有效的函數簽名,類聲明必須以分號結尾。 –