クラスの残りの部分全体で、コンストラクター引数から推定された型をテンプレート引数として使用したいと思います。これは可能ですか?
このようなもの:
class AnyClass
{
public:
template<Class C>
AnyClass(C *c) {
//class C is inferred by constructor argument
}
// constructor argument is used as argument in other template types
nestclass<C> myNestedClass;
void randomfunction(C *randonarg) {
}
}
詳細:
つまりね。継承クラスの型を指定して、基本型を初期化しようとしています。以下の場合、DerivedA は Base から継承しますが、DerivedB は DerivedA から継承します。したがって、this
Base のコンストラクター (DerivedA にある) の値は実際には DerivedB へのポインターであるため、推論された型はBase
DerivedB 型になります。 . ただし、コンストラクターだけに限定するのではなく、Base クラスの残りの部分全体でこの型を使用したいと考えています。
class Base {
// type T derived from inheriting class
template<T>
Base(T *) {};
//like to use other places
void randomfunction(T *arg1) {
//does something with type T
};
}
class DerivedA : publicBase {
DerivedA() : Base(this) { //this should be a pointer to DerivedB, since it is inherited
//from DerivedB.
}
}
class DerivedB : class DerivedA {
//anything
}
**私の主な目標は、基本クラスで継承クラス型を使用することです。これは一種の別の質問だと思いますが、元の質問で解決策が見つかると思っていました。
私は仲介方法(以下で提案されている機能に似ています)を使用することを考えていますが、それが機能するかどうかはわかりません.
助けてくれてありがとう!