Так что мне интересно, можно ли получить доступ к конструктору базового класса из объекта унаследованных классов? Что-то вроде:Можно ли получить доступ к конструктору базового класса из унаследованного объекта класса?
#include <iostream>
class Foo
{
public:
Foo(int i)
{
id = i;
}
protected:
int id;
};
class Bar: public Foo
{
public:
void barFunc()
{
if (id>0)
{
std::cout << "Bar stuff" << std::endl;
}
else
{
std::cout << "Other Bar stuff" << std::endl;
}
}
};
int main()
{
Foo fooObj(7);
Bar b; //is it possible to access 'id' in Bar whilst initializing 'id' in Foo?
b.barFunc();
}
Если я просто запустить barFunc() объект б будет действовать, как если бы «идентификатор» не был инициализирован.
Имейте задание, и я не уверен, как работать с кодом, который они мне дали. Спасибо! :)
Почему бы не попробовать скомпилировать код. Вам не хватает конструктора в 'Bar' (добавьте его или наследуйте) и используйте в объявлении' b'. Вы должны это исправить. –
Действительно ли это скомпилировано? И да, это возможно, просто используйте список инициализаторов членов с помощью 'Bar's constructor. –
Спасибо, да, я пропустил конструктор для Bar, извиняюсь, да, это сработало, но я оставил конструктор пустым и имел, если id не был инициализирован, не был инициализирован, то cout «id не был инициализирован». Это была просто небольшая вода, которую я пыталась сформулировать, это всего лишь несколько строк. Благодаря :) –