У меня есть два класса.Наследование C++
class A:
class B: public A
{
//new function
void setHint(...);
}
И иметь данные структуры.
typedef std::shared_ptr<A> window_ptr;
std::stack<window_ptr> m_windowsStack;
m_windowsStack.push(std::make_shared<A>("Hint"));
m_windowsStack.push(std::make_shared<B>("Game"));
И есть функция поиска в стеке:
std::shared_ptr<A> WindowManager::findWindow(std::string title)
{
... return result;
}
И использовать функцию находят элемент в стеке:
auto w = findWindow("Game"); //return element type B
w->setHint(window);
Но оказывается, что функция FindWindow возврата type A
. Я получаю ошибку "" класс А 'не имеет члена с именем' setHint ' w-> setHint (window); "
Должен ли я объявлять функцию setHint в классе A как виртуальную функцию? Как заставить переменную автоматически понимать, что она относится к типу B?
Просто введите результат, т. Е. 'Auto w = findWindow (« Игра »);' -> 'auto w = static_cast (findWindow (« Game »));' – George
'class A:' это ошибка, напишите реальный код. Кроме того, я не уверен, что вы хотите, чтобы 'setHint' был вариационной функцией. –
@ M.M класс A: {} это абстрактный класс, мой класс большой, и для этого вопроса \ функции много ненужных переменных. :) –