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

Компилятор считает функцию неопределенной - C++

Восстановить пароль Регистрация
 
ledkets
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 25
19.02.2012, 19:13     Компилятор считает функцию неопределенной #1
Для каждого класса есть свой заголовочный файл. В первом классе находится абстрактный метод. Второй класс, дочерний от первого, реализует этот метод, третий, просто имеет в себе объект второго класса. Проблема в том, что когда я создаю в main'е объект третъего класса, появляется ошибка: "Error 1 error LNK2001: unresolved external symbol "public: virtual void __thiscall AbstractClass::abstractMethod(void)" (?abstractMethod@AbstractClass@@UAEXXZ) C:\Documents and Settings\Username\My documents\Visual Studio 2010\Projects\consol_1\consol_1\main.obj consol_1" То есть, как я понял, компилятор ругается на то, что не реализован абстрактный метод abstractMethod() в первом классе.

AbstractClass.h (первый класс)
C++
1
2
3
4
5
6
#pragma once
 
class AbstractClass{
public:
    virtual void abstractMethod();
};
InheritsAbstractClass.h(второй класс)

C++
1
2
3
4
5
6
7
#pragma once
 
#include "AbstractClass.h"
 
class InheritsAbstractClass: public AbstractClass{
    void abstractMethod(){};
};
UsesInheritsAbstractClass.h(третий класс)

C++
1
2
3
4
5
6
7
8
#pragma once
 
#include "InheritsAbstractClass.h"
 
 
class UsesInheritsAbstractClass{
public: InheritsAbstractClass IAC;
};
main.h
C++
1
2
3
4
5
6
7
#include "UsesInheritsAbstractClass.h"
int main(int,char**)
{
    UsesInheritsAbstractClass UIAC;
 
    return 0;
};
Подскажите пожалуйста, в чем может быть дело?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.02.2012, 19:13     Компилятор считает функцию неопределенной
Посмотрите здесь:

Разработать функцию, которая считает среднее арифметическое и геометрическое массива чисел C++
компилятор считает объект l-value, но объект таковым не является C++
C++ Используя функцию, составить программу, которая считает количество изменений знака в массиве чисел. y=f(x). В С++
C++ Описать рекурсивную функцию, которая считает количество пропусков в тексте
C++ Dev c++, компилятор не понимает функцию toupper()
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.02.2012, 19:20     Компилятор считает функцию неопределенной #2
Цитата Сообщение от ledkets Посмотреть сообщение
#include "UsesInheritsAbstractClass.h"
int main(int,char**)
{
* * * * UsesInheritsAbstractClass UIAC;
};
Лишняя точка с запятой
Попробуйте так, конечно если по смыслу подходит
C++
1
2
3
4
5
class AbstractClass
{
public:
        virtual void abstractMethod() = 0;
};
ledkets
0 / 0 / 0
Регистрация: 22.06.2010
Сообщений: 25
19.02.2012, 19:34  [ТС]     Компилятор считает функцию неопределенной #3
Спасибо, помогло. Правда не совсем понятно, почему добавленное "=0" исправило ошибку. Может быть есть какой-нибудь материал на эту тему?
go
Эксперт C++
3582 / 1362 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
19.02.2012, 19:37     Компилятор считает функцию неопределенной #4
Цитата Сообщение от ledkets Посмотреть сообщение
Правда не совсем понятно, почему добавленное "=0" все исправило.
Добавление чистой виртуальной функции, для того, что класс стал абстрактным. Литературы полно, прочитайте про виртуальные функции.
Yandex
Объявления
19.02.2012, 19:37     Компилятор считает функцию неопределенной
Ответ Создать тему
Опции темы

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