Я новичок в cplusplus, и я понятия не имею, как сделать неявный тип преобразования между структурами.Неявное преобразование типов с structs
Я хочу сделать следующее:
A a = new __A();
Object o = a;
Я знаю, что для этого требуется оператор перегрузки (я думаю?), И все же, пытаясь реализовать перегрузку операторов было бесполезно. Я использовал примеры в этой статье: http://www.cplusplus.com/doc/tutorial/typecasting/, и все же я не могу получить что-нибудь для работы. Любая помощь будет очень благодарна. Вот макеты моих структур.
typedef __Object* Object;
typedef __Class* Class;
typedef __String* String;
typedef __A* A;
typedef __Test002* Test002;
struct __Object {
__Object_VT* __vptr;
// The constructor.
__Object();
// The methods implemented by java.lang.Object.
static int32_t hashCode(Object);
static bool equals(Object, Object);
static Class getClass(Object);
static String toString(Object);
// The function returning the class object representing
// java.lang.Object.
static Class __class();
// The vtable for java.lang.Object.
static __Object_VT __vtable;
};
struct __A {
__A_VT* __vptr;
__A();
static __String* toString(A);
static int32_t hashCode(Object);
static bool equals(Object, Object);
static Class getClass(Object);
static Class __class();
static __A_VT __vtable;
};
Имена с ведущим подчеркиванием, за которым следует заглавная буква, и два символа подчеркивания (где бы то ни было) являются зарезервированными именами компиляторов. –
'__Object_VT * __vptr;' Что ты делаешь? Если вы новичок в C++, вам действительно нужно найти лучший учебный ресурс, потому что все, что вы сейчас используете, ужасно. – Julian
Почему вы делаете 'typedef __A * A?'? Это действительно ужасно! Скажите, что вы не просто делаете это, чтобы сделать A A a = new A(); 'больше похожи на Java. –