简而言之,我有一个模板类 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。
我究竟做错了什么?