2013-08-09 2 views
-2

Я хотел бы, класс А, чтобы hinerit из класса В без А, имеющих собственного при создании экземпляр BC++ - Наследование ссылки

Идея заключается в том, чтобы создать объект B в куче (с помощью B Нового) и введите указатель на A. A затем использовал этот объект для решения наследования.

Exemple, что я хотел бы сделать

B* b = new B(); 
b->myBmethode(); 
{ 
    A(b); 
    A.myBmethode(); 
} // A destroyed 
b->myBmethode(); 
delete b; 
+1

Это довольно запутанным. – chris

+2

Вместо того, чтобы рассказывать нам о механизме, который вы придумали, возможно, вы могли бы рассказать нам о проблеме, которую вы действительно пытаетесь решить. Думаю, есть лучший способ сделать это. –

+2

Вы не наследуете от объектов или ссылок на них: вы наследуете от * classes, * и механизмы для этого уже определены: вы не можете добавить к ним. Ваш вопрос не имеет смысла. – EJP

ответ

0

Если B была создана за пределами A, B не будет удален автоматически после удаляются, если у не делать это явно,

Создать интерфейс IA, пусть оба A и B реализуют этот интерфейс. Для B просто делегируйте всю реальную реализацию B. B.

Жизненный цикл B зависит от вашего дизайна. Когда тебе захочется уничтожить? Вы также можете сделать B singleton, если это имеет смысл.

class IA { 
    virtual doA() = 0; 
} 

class A: public IA { 
    virtual doA(); 
} 

class B: public IA {  
B(A&a);  
virtual doA(){ 
    a.doA(); 
} 
private: 
    A&a; 
} 

//init 
A* a = A::getInstance(); 
B *b = new(*a) ; 
b->doA(); 
1

Нет, это невозможно (если я правильно понял ваш вопрос).

3.7.5

Продолжительность хранения подобъектов членов, подобъектов базовых классов и элементов массива является то, что их полного объекта

+0

Я так понимаю, поэтому я хотел бы, чтобы подобъект был выделен в кучу (используя новый) rater, а затем в стеке (для того, чтобы у них была более продолжительная продолжительность жизни) – Amxx

+0

@Amxx: Субобъекты не могут иметь более продолжительный срок службы, чем их полный объект. Вы действительно понимаете, что говорит цитата? –

+0

подобъекты выделены главными объектами, поэтому существует продолжительность жизни. То, что я пытаюсь достичь здесь, будет для того, чтобы подобъект был ссылкой, поэтому, однако, ссылка будет уничтожена с помощью основного объекта, субобъект позади ссылки все равно будет работать – Amxx

Смежные вопросы