C++ Advanced, 09_02_IDs - записване на един тип обект в друг тип
Здравейте,
какви са начините да се запише един тип обект в друг тип, пробвах няколко варианта, но не работи нито един и се чудя защо:
1/ без онаследяване, независим обект HasId само с едно поле int id, слайсвaм Company към него: защото ми трябва само първото поле:
HasId* operator=(Company* c) {
return (HasId*)c;
2/ //VER.2
//this->id = c->getId();
//return this;
}
Или 3/ HasId поле: int id;
Ctor: HasId(Company * c) : id(c->getId()) {} И с един гетер за полето.
4/ако пробвам HasId да е базов и да се онаследява от Company, в конструктора й няма инициализация на базов клас, следователно тя няма базов клас, няма как да стане по този начин; Същото важи и за .HasInfo;
5/ ако HasInfo наследява Company, и HasId наследява Company, се инициализират от main() е чрез = c, което е copy-elision тук и би трябвало да е така ctor-a:
class HasId : public Company { public: int id;
HasId() : Company() {}
HasId(Company* c) : Company(c->id, c->name, c->employees), id(id) {}
Явно нещо бъркам?
Поздрави!
Не.
В C++ няма хойстинг. :)
Променливи, функции и класове са видими след като бъдат деклрарирани/инклуднати.
Може би се бъркаш с видимостта на методите в даден клас - там реда на обявяването и извикването в рамките на класа е без значение.