2011-10-22 15 views
2

私は2つのポインタを持っています。 p1。 p2。
p1とp2の両方が異なるクラスを指しています。
クラスにはいくつかの同様のメソッド名があります。
と繰り返しコードを避けるためにテンプレート関数を2回呼び出す必要があります。(C++)テンプレートへのポインタの受け渡し

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

は真ん中のparamater、「項目が」..私はアイテムが変更したい場合は、私の署名がどのように見えるべきかということであることを参照してください。ここで
は私の関数でありますか?

..orは私が
Tとしてそれを渡す必要があります* &項目

..or私はアイテム

コンパイラは、多くのことをスライドさせて頂いており** T
としてそれを渡す必要がありますしかし、私がすべてを縛りつけると、それは壊れます。

私のポインタの1つを使用してその関数を呼び出すにはどうすればよいですか?
鋳造について何か?参照することによりポインタによってパラメータを渡すと、わずかに異なる意味、例えばを持っていることを

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

あなたのコードはそのまま動作するはずです。何か問題があるかどうかを確認するためにあなたの完全なコードを投稿できますか? –

答えて