私は構造物で遊び始めました、私は私が呼んだものを作成しましたLR
:
struct LR{
int v;
LR* L;
LR* R;
};
私はそれを一般的な方法で操作する方法を理解しています-main
以下のコード、クラスの構築を開始する前に、文字列( "LRLRR")の形式でLRのノードの「アドレス」を取得して返す再帰関数を書き始めましたLRが必要ですが、コンパイラからエラーが発生します:
LR.cpp In function 'LR chooseNode(LR*, std::string)':
LR.cpp [Error] request for member 'L' in 'tree', which is of pointer type 'LR*'
(maybe you meant to use '->' ?)
-一部再帰を伴う行のエラーchooseNode(*tree.L,str2);
私は何を間違っているのですか、それともそれをデバッグする方法ですか?(かなり練習である私の実装の全体の概念を除いて)。
#include<iostream>
#include<string>
#define SHOW(a) std::cout << #a << ": " << (a) << std::endl
using namespace std;
struct LR{
int v;
LR* L;
LR* R;
};
LR chooseNode(LR* tree, string str){// for example str="LRL"
// for clarity I've cutted the most of the code
if(str[0]=='L')
chooseNode(*tree.L,str2);
else if(str[0]=='R')
chooseNode(*tree.R,str2);
};
int main(){
LR d1,d2,d3;
d1.v=4;
d1.L=&d2;
(*(d1.L)).L=&d3;
d3.v=12345;
SHOW((*(*d1.L).L).v);
cout<<"Opis: "<<"\n";
SHOW(int(&d1));
SHOW(int(&d2));
SHOW(sizeof(d2.v));
return (0);
}