Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
80 / 39 / 22
Регистрация: 03.05.2013
Сообщений: 686
1

Std::unique_ptr virtual метод

22.09.2016, 11:29. Показов 1062. Ответов 4
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <memory>
 
class Base {
public:
   virtual void f1();   // Virtual function.
};
 
class Derived : public Base {
public:
   virtual void f1();   // Virtual function.
};
 
 
int main()
{
    std::unique_ptr<Base> d1 = std::make_unique<Derived>();
}
Подскажите, ошибка в ide =
Кликните здесь для просмотра всего текста
||=== Build: Debug in test (compiler: GNU GCC Compiler) ===|
obj\Debug\main.o||In function `make_unique<Derived>':|
Z:\C++\test\main.cpp|9|undefined reference to `vtable for Derived'|
||error: ld returned 1 exit status|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|


В книжке пример работает.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2016, 11:29
Ответы с готовыми решениями:

Использование std::unique_ptr
Есть в коде подобная конструкция, вылетает исключение на этапе очистки памяти. С чем это может быть...

Компилятор не видит std::unique_ptr
Не создается unique_ptr int main(int argc, char *argv) { QCoreApplication a(argc, argv);...

Отсутствует std::unique_ptr gcc 4.8.1
всем привет , я в С++ начинающий и возникла проблема не работает std::unique_ptr версия...

Копирование std::unique_ptr в структуре
Есть структуры и vector struct myStruct { int a; int b; void* param; }; struct sSetup {...

4
Эксперт С++
8426 / 4099 / 894
Регистрация: 15.11.2014
Сообщений: 9,200
22.09.2016, 11:45 2
1.
отсутствие виртуального диструктора в базовом классе - UB

2.
где реализации функций?
1
Эксперт С++
4974 / 3081 / 456
Регистрация: 10.11.2010
Сообщений: 11,160
Записей в блоге: 10
22.09.2016, 11:46 3
А где реализации void f1()?

Цитата Сообщение от zasadadada Посмотреть сообщение
В книжке пример работает.
Не верю.
1
80 / 39 / 22
Регистрация: 03.05.2013
Сообщений: 686
22.09.2016, 11:51  [ТС] 4
Скотт Майерс Эффективный и современный С++ 42 рекомендации. 88 страница. Или я буквально его примеры воспринимаю?
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Base {
pubic :
  virtual void doWork ( ) ;
) ;
 
class Derived : pubic Base {
pubic :
  virtual void doWork ( ) ;
} ;
 
std::unique_ptr<Base > upb = std::make_unique<Derived>(); / / указывает на объект
upb->doWork ( ) ; // Вызов doWork через указатель на базовый класс ; вызывается функция производного класса
Да, дописал как вы и писали. Работает. Спасибо.
0
15104 / 8106 / 1956
Регистрация: 30.01.2014
Сообщений: 13,771
22.09.2016, 12:51 5
Цитата Сообщение от zasadadada Посмотреть сообщение
Или я буквально его примеры воспринимаю?
Да, буквально.
Примеры даются с минимальным содержанием, для иллюстрирации некоего аспекта. Все детали реализации ты должен сам понимать и дополнять исходя из контекста, иначе книгу эту читать пока рано.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2016, 12:51

Копирование объектов std::unique_ptr
привет, столкнулся с такой ситуацией, что вроде как копировать объекты std::unique_ptr запрещено,...

Шаблонные аргументы конструктора std::unique_ptr
Если я пишу код std::unique_ptr&lt;int, void(*)(int*)&gt; myPtr_5(new int, (int* p) {delete p; });...

Не срабатывает move конструктор std::unique_ptr
Всем привет! Битый час не пойму почему в списке захвата компилятор ругается на удаленный копирующий...

Проблема с умным указателем std::unique_ptr
здравствуйте. есть задание - написать небольшую простенькую игру, где есть базовый класс Unit,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.