Für meinen vorhandenen Code, der arbeitet, hat es Aussage wie:(von einem anderen Namespace) Zeiger
namespace aa{
class a{}
class b: public a {....}
class x
{
a* function(){
b* object = new b(...);
....
return b;
}
}
}
Dort wird die implizite convertion von b * ist in einem * während der Aufruf "Funktion" Und es gibt ein * zurück. Es klappt.
Jetzt habe ich die Klasse in einem anderen Namensraum bewegen wie:
namepsace newaa{
class a{}
}
namespace aa{
class b: public newaa::a {....}
class x
{
newaa::a* function(){
b* object = new b(...);
....
return b;
}
}
}
Mit über Änderungen, ich den Fehler bekam: kann sie nicht verdeckte 'aa :: b *' auf 'newaa: a *' im Gegenzug, Warum?
Und wenn ich dynamic_cast verwenden zurück dynamic_cast (b) Es übergeben die Kompilation, aber ich habe einige andere Fehler in anderen Dateien.
Beitrag echten Code, dass wir uns bitte zusammenstellen können. Es gibt so viele kleine Fehler, dass es unmöglich ist, zu erraten, wie Ihr echter Code aussieht. – interjay
auch, "Es bestehen die Kompilation, aber ich habe ein paar Fehler" - _Which sind? _ –
"Code, der funktioniert" gefolgt von Code, der nicht einmal kompiliert ... –