c++における自己参照的なクラスに関して
Posted: 2017年1月09日(月) 21:54
次に示すコードは実行できます。(5回文章が出力されます。)
しかし、このDimClassをこう変更するとコンパイルエラーになります。
確かにこのクラスはポインタの自己参照?を行ってはいるのですが、一定の値で止まるようにはなっています。
c++において、このようなことは不可能なのでしょうか。
(STLのような配列を実現する際、このように設計してみようと考えました。示しているコードは問題の部分を抜粋しています。)
ご教授お願いします。
#include <iostream>
template <class T> class DimClass{
public:
DimClass<T>* ptr;
DimClass(int dim){
std::cout << "Constructor (" << dim << ")\n";
if(dim>1) ptr = new DimClass<T>(dim-1);
}
};
int main(void){
DimClass<int> test(5);
return 0;
}
確かにこのクラスはポインタの自己参照?を行ってはいるのですが、一定の値で止まるようにはなっています。
c++において、このようなことは不可能なのでしょうか。
template <class T> class DimClass{
public:
DimClass<T*>* ptr;
DimClass(int dim){
std::cout << "Constructor (" << dim << ")\n";
if(dim>1) ptr = new DimClass<T*>(dim-1);
}
};
ご教授お願いします。