Это очень сложно, я много пытался его решить, но когда я изменяю размер частного члена внутри шаблона/класса, т. Е. Когда я вызываю оператор :: 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.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 такие же
Любая помощь будет с удовольствием оценили
Regard
JORR
Я оспариваю, что весь синтаксис в порядке, так как вы говорите ' class ...'. Во всяком случае, что вы действительно пытаетесь сделать? Возможно, где-то есть готовая структура данных, которая будет выполнять эту работу. –
-1 не настоящий код. "для (i = 0 ... BaseVect.size()) недействительно C++. –
-1 не настоящий код, синтаксис ** не ** 'okay':« foo() »не является допустимой сигнатурой функции, объявления класса должны заканчиваться точкой с запятой. –