【发布时间】:2015-07-23 18:45:38
【问题描述】:
以下代码打印出 343。我不明白为什么它没有通过引用获取 currentDirectory 并更新它指向根实例的子目录的内容。
我希望它输出 344。
#include <iostream>
using namespace std;
class Directory;
struct Node{
Node* prev;
Node* next;
Directory* data;
};
class Directory{
public:
int testValue;
Node* subDirectories;
void addSubdirectory(int testValue){
Directory* newDirectory = new Directory(testValue);
Node* elem = new Node;
elem->prev = NULL;
elem->data = newDirectory;
elem->next = NULL;
subDirectories = elem;
}
Directory(int x){
testValue = x;
}
};
void testFunction(Directory* x){
x = x->subDirectories->data;
cout << x->testValue;
}
int main(){
Directory* root = new Directory(3);
root->addSubdirectory(4);
Directory* currentDirectory = root;
cout << currentDirectory->testValue;
testFunction(currentDirectory);
cout << currentDirectory->testValue;
}
我尝试了一个运行良好的简化示例:
#include <iostream>
using namespace std;
class Directory;
class Directory{
public:
int testValue;
Directory(int x){
testValue = x;
}
};
void testFunction(Directory* x){
x->testValue = 4;
cout << x->testValue;
}
int main(){
Directory* root = new Directory(3);
Directory* currentDirectory = root;
cout << currentDirectory->testValue;
testFunction(currentDirectory);
cout << currentDirectory->testValue;
}
这会按预期打印出 344。这个是通过引用传递的。
【问题讨论】:
-
不,它是通过指针值而不是通过引用传递。
-
这就是我的想法,但我无法让它工作。我试过把它做成双指针和一切
-
您是否尝试过将其作为参考?我的意思是,您的问题基本上是在询问通过引用传递
-
在这种特殊情况下,我不知道如何将其作为参考传递。
-
我在两个示例中都以相同的方式传递它,但在第二个示例中它有效,而在第一个示例中它没有