1

簡単に言うと、メソッドを持つテンプレート クラス 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 になります。

私は何を間違っていますか?

4

2 に答える 2