2015-05-17 44 views
-1

我想将no->rodzic = tz;行上的子程序连接到指向tz的指针,该指针指向“父”,但这些是2个不同的结构。有没有可能像我想的那样做?我的错误是:cannot convert...等在分配如何用C++中的不同结构声明子父指针

struct lotwarta { 
    int wartosc,x,y; 
    lotwarta *parent; 
}; 
struct lzamknieta { 
    int wartosc,x,y; 
    lzamknieta *parent; 
    lzamknieta *tz; 
}; 

lzamknieta *nz; 
nz = new lzamknieta; // do listy zamknietej dodajemy 1 element 
nz->wartosc = 0; 
nz->x = startx; 
nz->y = starty; 
nz->parent = NULL; 
lzamknieta* tz = nz; 

lotwarta *no; 
no = new lotwarta; 
no->wartosc = 0; 
no->x = startx; 
no->y = starty; 
no->parent = NULL; 

cout << no->rodzic << endl; 
lotwarta *to = no; 

if((y!=1) && (G[y-1][x]!=5)) 
{ 
    no = new lotwarta; 
    no->wartosc = euklides(x,y-1); 
    no->x = x; 
    no->y = y-1; 
    no->parent = tz; <- here I have this error 
} 
+3

不够膨胀。请包括类定义。 – Cinch

+0

如果'lotwarta'的'rodzik'元素不是'lzamknieta *',那么赋值注定会失败,除非这两个类之间可能存在继承关系。 –

+0

如果没有将名称翻译成英文您可以至少格式化代码。 – riodoro1

回答

0

我真的不知道这是什么代码应该做的,但 你可以通过简单地铸造它的价值分配到另一种类型的指针:

no->rodzic = reinterpret_cast<lzamknieta*>(tz); //in this case tz would be casted to a pointer of type lzamknieta 

但是,将指针转换为另一种类型并不总是一个好主意,这取决于上下文。

+1

欢迎来到Stack Overflow。请尽快阅读[关于]页面。如果您提供的建议得到遵守,您可以观看代码崩溃并在以后刻录!回答这个问题为时尚早;没有足够的信息给出可靠的答案,答案很可能不涉及“reinterpret_cast”。如果'rodzic'的类型正确,'lzamknieta *',则不需要演员。如果'rodzic'的类型不正确,则无法进行强制转换将可靠地修复代码。 –