2017-06-06 16 views
2

私はデータ構造を構築しており、ポインタで示されるオブジェクトを操作する必要があります。ポインタで示されるオブジェクトは次のとおりです。ポインタを表すオブジェクトを操作する方法C++

//in header file 
struct treeNode{ 
    int value; 
    treeNode* left; 
    treeNode* right; 
}; 

現在の実装では、ポインタが指しているものだけが変更されます。

target->value = oneLarger->value 

対象とoneLargerが定義されています

void method(treeNode* target){ 
    treeNode* oneLarger = (tree node retrieved by another method) 
    target->value = more->value 
} 

は、参照することにより、パスを経由して行うことが、このことは可能ですか私は値渡しする必要がありますか?

答えて

2

あなたは行うことができます。ポインタで、文献によって、コピー

byCopy機能に加えられた変更は、すぐに機能が行われるように迷子になることに注意してくださいで!

//by Pointer 
void method(treeNode* target) { 

    treeNode* oneLarger = ... 
    target->value = oneLarger->value; 
} 

//by Ref 
// since that is a ref, you access the value using the dot(.) and not the `->` operator 
void method(treeNode& target) { 

    treeNode* oneLarger = ... 
    target.value = oneLarger->value; 
} 

//by Copy 
// since that is a copy, you access the value using the dot(.) and not the `->` operator 
void method(treeNode target) { 

    treeNode* oneLarger = ... 
    target.value = oneLarger->value; 
} 
+0

ありがとう:

これらのオプションは、次のようになり!私はその作品を信じています! –

関連する問題