简而言之,我有一个模板类树,它有一个createTree(Data* arrayData[])
方法。这个方法接收的指针数组到类型数据的数据:传递指向模板类方法的指针数组
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,与空的单值。
我在做什么错?
'sizeof(tabDonnees)/ sizeof(int)'可能产生1.您将指针的大小除以int的大小。另外,creerArbre(createTree)方法不能确定'tab'的大小,它只能通过地址传递,并且不会存储它的大小,也不会通过编译器的大小。 – 2013-04-07 00:45:56
@Alexis Leclerc,您好,亚历克西斯,欢迎来到SO。请考虑到SO的大部分用户都是全球开发人员。发布法语,西班牙语,印度语或德语,或阿拉伯语或任何其他语言的代码是个不错的主意。我翻译了它。 – 2013-04-07 00:48:36
@StephaneRolland - 重要吗?他的问题本身是英文的。只有类名,函数名使用不同的语言。并没有关系。 – user93353 2013-04-07 01:10:50