이것은 매우 복잡해 보입니다. 해결하기 위해 많은 노력을 기울였습니다. 그러나 템플릿/클래스 내에 private 멤버의 크기를 조정할 때, 즉 Operator :: InitExtVector, 주소를 통해 intVect의 크기를 조정하고 Operator :: ShowExtVector를 표시/호출 할 때 크기가 0입니다. 다시 발생하지 않아야합니다. 왜 벡터 정보가 손실 되었습니까?다른 클래스의 2 개의 함수 중 한 클래스의 벡터 조작
#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
및 클라이언트
나는 템플릿/클래스, Base.H이
모든 구문은 괜찮#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);
}
, 주소 : 코드 someOperations.C처럼 보인다 InitExtVect 및 ShowExtVector 내부 pVect의 같은
어떤 도움이 될 것입니다 기꺼이 감사
시선
JORR 난 당신이 참조에 벡터를 먹고 싶어 생각
나는' class ...'라고 말하기 때문에 모든 문법은 괜찮습니다. 어쨌든, 당신은 정말로 무엇을하려고합니까? 어쩌면 작업을 수행 할 준비가 된 데이터 구조가있을 수 있습니다. –
-1 실제 코드가 아닙니다. "for (i = 0 ... BaseVect.size())"는 C++가 아닙니다. –
-1 실제 코드가 아님, 구문은 ** not **'okay' : "foo()"는 유효한 함수 서명이 아니며 클래스 선언은 세미콜론으로 끝나야합니다. –