실제 데이터를 인코딩하고 디코딩해야하는 일부 데이터 형식에 해당하는 일부 클래스가 있습니다. 예 : class MyInt32
은 정수 값을 인코딩하고 인코딩 된 바이트 스트림에서 디코딩하는 기능을 갖습니다. 이 모든 클래스는 기본 클래스 MyTypes
에서 파생됩니다. 디코딩하는 동안 인코딩 된 문자열에서 값을 가져온 후 MyInt
의 경우 int
과 같은 값을 입력하고 데이터를 void *
으로 반환합니다.런타임 형식 ID를 사용하여 void 포인터에서 데이터 가져 오기
수신 측에서는 포인터를 (int *)
에 입력하고 역 참조하여 결과에 넣습니다.
하지만 이제 배열이 필요한 유형이 필요합니다. 배열의 경우 템플릿을 사용하여 배열의 내용을 말합니다. . 즉, 디코드 기능에서
template<typename T>
class MyArray:public MyType
{
vector<T *> mydata;
....
};
가 나는 T 형식의 디코드를 호출하지만 지금은 단지 void*
반환합니다. 내 배열 디코딩 된 형식을 알 수 없습니다. 그래서 void *
을 타입 변환 할 수 없으며 값을 얻기 위해 역 참조 할 수 없습니다. 내가 MyInt
MyArray<MyInt> data;
배열 'data
'의 배열을 가지고가는 경우에 그 , 자사의 디코딩 결과가 vector<int>
될 것이라는 점을 알 수 없습니다. 그리고 vector<int*>
대신 데이터를 vector<int>
으로 전달하는 것이 좋습니다. 어떻게해야합니까?