2011-10-22 4 views
2

두 개의 포인터가 있습니다. p1. p2.
p1과 p2는 모두 다른 클래스를 가리 킵니다.
클래스에는 몇 가지 유사한 메서드 이름이 있습니다.
및 반복되는 코드를 방지하기 위해 템플릿 함수를 두 번 호출하고 싶습니다.(C++) 템플릿에 포인터 전달

template <class T> 
void Function(vector<T> & list, T* item, const string & itemName) 

중간 paramater "항목이".. 내가 항목을 변경하려는 경우 내 서명을 보는 방법이다 것을 볼 : 여기
내 기능입니다?

가 .. 또는 내가
T * & 항목으로 통과해야 내가
T ** 컴파일러가 밀어 많은 것들을시키는됩니다

항목으로 전달해야합니다 .. 또는

, 하지만 모든 것을 묶으려고 할 때 그것이 깨집니다.

내 포인터 중 하나를 사용하여 함수를 어떻게 호출합니까?
캐스팅에 대해 뭔가 ?? 참조 포인터에 의해 매개 변수를 전달하는 것은 약간 다른 의미, 예를 가지고

template <class T> 
void Function(std::vector<T> & list, T* item, const std::string & itemName) 
{ 
    list.push_back(T()); 
    if (item != NULL) 
     item->x = 4; 
} 

struct A 
{ 
    int x; 
}; 
struct B 
{ 
    double x; 
}; 
A a; 
B b; 
std::vector<A> d; 
std::vector<B> i; 
Function(d, &a, "foo"); 
Function(i, &b, "bar"); 

참고 :이처럼 코드를 호출 할 수 있어야한다

+0

포인터 자체를 변경 하시겠습니까, 아니면 포인터가있는 객체 만 변경 하시겠습니까? –

+0

지적 개체! –

+1

코드가 그대로 작동해야합니다. 간결한 문제가 있는지 확인하기 위해 전체 코드를 게시 할 수 있습니까? –

답변