Ассоциация с базовыми классами - Как решить абстрактный тип `error` [duplicate]

Если вы находитесь на удаленной ветке (называемой feature-branch), клонированной из Золотого репозитория (golden_repo_name), то вот техника, чтобы раздавить ваши коммиты в одну:

  1. Оформить заказ золотой репо
    git checkout golden_repo_name
    
  2. Создайте из него новую ветвь (золотой репо) следующим образом
    git checkout -b dev-branch
    
  3. Сквош слияние с вашей локальной ветвью, что вы уже
    git merge --squash feature-branch
    
  4. Зафиксируйте свои изменения (это будет единственный коммит, который идет в dev-ветке)
    git commit -m "My feature complete"
    
  5. Нажмите ветвь в локальный репозиторий
    git push origin dev-branch
    
16
задан Connor Glosser 17 February 2012 в 14:57
поделиться

2 ответа

Вы не можете передать объект Animal в функцию производного класса, потому что вы не можете создать объект класса Animal и все, это абстрактный класс. Если класс содержит по крайней мере одну чистую виртуальную функцию (speak()), то класс становится абстрактным классом, и вы не можете создавать какие-либо его объекты. Однако вы можете создавать указатели или ссылки и передавать их им. Вы можете передать указатель Animal или ссылку на метод.

void speakTo(Animal* animal) 
{
    animal->speak();
}

int main()
{
    Animal *ptr = new Dog();
    speakTo(ptr);

    delete ptr;   //Don't Forget to do this whenever you use new()
    return 0;
}
17
ответ дан Alok Save 26 August 2018 в 08:10
поделиться

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

void speakTo(Animal& animal) {
    animal.speak();
}
9
ответ дан Vaughn Cato 26 August 2018 в 08:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: