Передача унаследованного класса в функцию в c ++ - PullRequest
2 голосов
/ 22 января 2012

У меня небольшая проблема с наследованием в C ++, которую я не могу понять.

Итак, скажем, у меня есть несколько классов, полученных из списка stl, т.е.:

class Class1: public list<T>{
      virtual func1();

}

class Class2 : public Class1<w/e>{
         func1();
}

Проблема в том, что я передаю их функции. Как я могу правильно передать экземпляр одного из них функции, чтобы она использовала правильную виртуальную функцию, если возможно передать экземпляр любого типа? Я не выполнял наследование и виртуальные функции в течение некоторого времени, поэтому я немного заржавел. (Это при условии, что функция не является функцией-членом классов).

1 Ответ

6 голосов
/ 22 января 2012

Вам нужно будет передать их функции в качестве ссылки

int function(Class1& obj);

или как указатель;

int function(Class1* obj);

и просто вызовите правильную версию виртуального метода.

Если вы передадите их без одного из них

int function(Class1 obj);

Объект будет сконструирован для копирования, чтобы всегда быть Class1 в функции, и всегда будет вызывать Class1 :: func1 ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...