簡単に言うと、メソッドを持つテンプレート クラス Tree がありcreateTree(Data* arrayData[])
ます。このメソッドは、型 Data のデータへのポインターの配列を受け取ります。
template<class Data>
void Tree<Data>::createTree(Data* arrayData[]) {
m_indexCreation = 0;
cout << sizeof(arrayData) / sizeof(int) << endl;
m_root = createChildTree(arrayData);
}
私のmain()
関数では、文字列オブジェクトへのポインターの配列を作成し、それを埋めます。次に、メソッドに渡そうとしますが、createTree()
メソッド内で配列のサイズが 1 になります。つまり、メソッド内のカウントは "1" を出力します。これが私のものmain()
です:
int main() {
string* tab[20];
for ( int i = 0 ; i < 20 ; i++ ) {
if ( i % 3 != 0 ) {
tab[i] = new string("James Johnson");
} else {
tab[i] = NULL;
}
}
Tree<string> tree;
tree.createTree(tab);
tree.display(tree.getRoot());
}
の配列全体の値を問題なく出力できますmain()
が、createTree()
では、配列のサイズが 1 に縮小され、単一の値が NULL になります。
私は何を間違っていますか?