Это кажется очень очень сложным, я много пытался решить его, но когда я изменяю размер закрытого члена внутри шаблона / класса, т.е. когда я вызываю Operator :: InitExtVector, я изменяю размер intVect через его адрес, и когда Я показываю / вызываю Operator :: ShowExtVector, его размер снова равен 0, чего не должно быть. Почему теряется векторная информация?
У меня есть шаблон / класс, 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, обычно без шаблона, 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);
}
Весь синтаксис в порядке, адреса pVect внутри InitExtVect и ShowExtVector одинаковы
Любая помощь будет с радостью оценена
С уважением
JORR