嘿,我是新來的C++面向對象編程(Java編碼),我有一些關於它的問題。C++面向對象的問題
我有兩個方法
void Manager::generate(){
// Generate robot basis
Matrix4 robotBasis = generateRobotBasis();
// Create Human
LinkedList * ll = new LinkedList();
createLL(ll);
Node *j = ll->GetRoot();
std::cout << j << "\n";
j = j->pChild_;
std::cout << j << "\n";
...
}
void Manager::createLL(LinkedList * ll){
Node node();
ll->InsertRoot(&node);
Node node2();
ll->InsertChild(&node, &node2);
Node node3();
ll->InsertChild(&node2, &node3);
Node *j = &node;
std::cout << j << "\n";
j = j->pChild_;
std::cout << j << "\n";
j = ll->GetRoot();
std::cout << j << "\n";
j = j->pChild_;
std::cout << j << "\n";
}
結果:
00ABF540
00ABF498
00ABF540
00ABF498
00ABF540
00CB83A8
最後一欄應該是00ABF498
?但原來是一些隨機存儲器地址。
這是一個函數聲明:'Node node();'。使用'Node節點;'。 – juanchopanza
希望成爲一名Java程序員,你意識到在C++中這樣做不是必須的:'LinkedList * ll = new LinkedList();'。 Java不是C++,因爲如果處理不當,所有這些都會造成內存泄漏。你只需要這樣做:'LinkedList ll;'然後將地址傳遞給你正在調用的函數。 – PaulMcKenzie
你能顯示LinkedList代碼嗎?你作爲Java程序員的陳述和事實是你插入一個本地棧變量作爲指針可能意味着你只是存儲一個指向它的地址的指針而不是複製它 – MatthiasB