Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
#1

Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" - C++

21.04.2014, 22:30. Просмотров 383. Ответов 12
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
interface Interface
{
        __int32 Read();
};
//---------------------------------------------------------------------------
class Type: public Interface
{
public:
        __int32 Read();
};
C++
1
2
3
4
5
6
7
8
9
10
__int32 Type::Read()
{
return 0;
}
...
//использую примерно так
Interface a;
Type b;
a = b;
a.Read();
выдает ошибку
[Linker Error] Unresolved external 'Interface::Read()' referenced from
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.04.2014, 22:30     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '"
Посмотрите здесь:

Error LNK2001: "unresolved external symbol _main" C++
error LNK2019: unresolved external symbol "public: __thiscall Shape2D::Shape2D(void)" (??0Shape2D@@QAE@XZ) C++
//unresolved external symbol "void_cdecl fun1(int,int)" (&fun1@@YAXHH@Z) referenced in function_main C++
Шаблон функции, ошибка "unresolved external symbol" C++
C++ Ошибка экземпляра класса: отсутствие ";" перед идентификатором "o_scenes_1"
C++ Виртуальные классы и ошибка "Error LNK2001: unresolved external symbol"
C++ Unresolved external "fun1 double"
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4383 / 3226 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
21.04.2014, 22:36     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #2
klynxe, для типа Interface метод не реализован. Собственно и экземпляры базового типа создавать нельзя (строка 7).
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
21.04.2014, 22:48  [ТС]     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #3
Tulosba, А если реализовать, то какой будет вызываться? интерфейса или класса Type?

Добавлено через 1 минуту
Или как по другому можно обратиться к методу, реализованному в разных классах, через одну переменную?
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 07:09     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #4
Цитата Сообщение от klynxe Посмотреть сообщение
Или как по другому можно обратиться к методу, реализованному в разных классах, через одну переменную?
Если через объект производного вызвать метод базового (должен находится в public разделе):
C++
1
2
Type b;
b.Interface::Read();
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
22.04.2014, 17:27  [ТС]     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #5
Мне надо как раз через интерфейс выполнить функцию подкласса, то есть перегруженную
C++
1
2
3
4
Interface a;
Type b;
a = b;
a.Read(); //вызывается Read() в a, а не переопределенный в Type
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 17:32     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #6
Базовый класс ничего не знает о производном. Если сделать методы виртуальными, то через указатель на базовый, который связан с объектом производного, можно вызвать метод производного (полиморфизм).
zss
Модератор
Эксперт С++
 Аватар для zss
6111 / 5714 / 1849
Регистрация: 18.12.2011
Сообщений: 14,593
Завершенные тесты: 1
22.04.2014, 17:33     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #7
C++
1
2
3
4
Interface *a;
Type b;
a = &b;
a->Read(); //вызывается Read() в a, а не переопределенный в Type
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 17:45     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #8
Цитата Сообщение от zss Посмотреть сообщение
//вызывается Read() в a, а не переопределенный в Type
Если только Read() не виртуальный.

Добавлено через 2 минуты
zss, запутал.

Добавлено через 58 секунд
Без виртуальности будет вызываться метод базового. ТС нужно наоборот.
zss
Модератор
Эксперт С++
 Аватар для zss
6111 / 5714 / 1849
Регистрация: 18.12.2011
Сообщений: 14,593
Завершенные тесты: 1
22.04.2014, 17:46     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #9
Так ТС вроде и просил вызвать невиртуальный метод базового класса.
alsav22
5410 / 4806 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
22.04.2014, 17:51     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #10
Цитата Сообщение от klynxe Посмотреть сообщение
Мне надо как раз через интерфейс выполнить функцию подкласса
...
zss
Модератор
Эксперт С++
 Аватар для zss
6111 / 5714 / 1849
Регистрация: 18.12.2011
Сообщений: 14,593
Завершенные тесты: 1
22.04.2014, 18:03     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #11
Ну тогда пусть сделает Read() виртуальным и мой пример сработает.
klynxe
10 / 10 / 4
Регистрация: 07.09.2012
Сообщений: 537
22.04.2014, 18:25  [ТС]     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #12
Цитата Сообщение от zss Посмотреть сообщение
C++
1
2
3
4
Interface *a;
Type b;
a = &b;
a->Read(); //вызывается Read() в a, а не переопределенный в Type
Спасибо, сделал виртуальным, помогло, а вот не через ссылки ссылается на методы базового класса, как у меня в начале было
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 19:40     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '"
Еще ссылки по теме:

C++ Ошибка при подключении заголовочного файла: "error LNK2019: unresolved external symbol"
Error LNK2019: unresolved external symbol "public: __cdecl videoInput::videoInput(void)" C++
Ошибка при сборке проекта: "error LNK2019: unresolved external symbol" C++
Как исправить ошибку "Link2001:unresolved external symbol __imp__UuidToStringW@8"? C++
C++ Error LNK2019: unresolved external symbol "public:

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

Или воспользуйтесь поиском по форуму:
zss
Модератор
Эксперт С++
 Аватар для zss
6111 / 5714 / 1849
Регистрация: 18.12.2011
Сообщений: 14,593
Завершенные тесты: 1
22.04.2014, 19:40     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '" #13
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от klynxe Посмотреть сообщение
не через ссылки ссылается на методы базового класса
В тот то и смысл полиморфизма:
через указатель на базовый класс вызываем метод производного класса
Yandex
Объявления
22.04.2014, 19:40     Интерфейс класса и ошибка "Unresolved external 'Interface::Read() '"
Ответ Создать тему
Опции темы

Текущее время: 04:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru