簡而言之,我有一個模板類樹,它有一個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