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

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

Войти
Регистрация
Восстановить пароль
 
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
#1

И вновь абстрактный класс - C++

23.11.2013, 12:04. Просмотров 385. Ответов 6
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef TINTEGER_H
#define TINTEGER_H
 
class TInteger {
    public:
        TInteger() : _head(0), _lenght(0) {};
        size_t GetLen(void) const { return _lenght; };
        virtual void print(void) const = 0;
        virtual TInteger& operator += (const TInteger&);
        virtual TInteger& operator -= (const TInteger&);
        virtual TInteger& operator *= (const TInteger&);
    protected:
        char* _head;
        size_t _lenght;
    private:
};
 
#endif //TINTEGER_H
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef TBINARY_H
#define TBINARY_H
 
#include "TInteger.h"
 
class TBinary : public TInteger {
    public:
        TBinary(const char*);
 
        void print(void) const;
        TBinary& operator += (const TBinary&);
        TBinary& operator -= (const TBinary&);
        TBinary& operator *= (const TBinary&);
};
 
#endif //TBINARY_H
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "TBinary.h"
#include <cstring>
//=========================================================
//*****************IMLEMENTATION***************************
//=========================================================
 
//=========================================================
//__________________Constructors___________________________
 
//C-tor from string 
TBinary::TBinary(const char* string)
{
    _lenght = strlen(string);
    _head = new char[_lenght];
    memcpy_s(_head, _lenght, string, _lenght);
}
Код
1>TBinary.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""public: virtual class TInteger & __thiscall TInteger::operator+=(class TInteger const &)" (??YTInteger@@UAEAAV0@ABV0@@Z)"
1>TBinary.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""public: virtual class TInteger & __thiscall TInteger::operator-=(class TInteger const &)" (??ZTInteger@@UAEAAV0@ABV0@@Z)"
1>TBinary.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""public: virtual class TInteger & __thiscall TInteger::operator*=(class TInteger const &)" (??XTInteger@@UAEAAV0@ABV0@@Z)"
1>TBinary.obj : error LNK2001: эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы ""public: virtual void __thiscall TBinary::print(void)const " (?print@TBinary@@UBEXXZ)"
1>C:\Users\└ыхъёрэфЁ\Desktop\OOP6\Debug\OOP6.exe : fatal error LNK1120: эхЁрчЁх°хээ√ї тэх°эшї ¤ыхьхэЄют: 4
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2013, 12:04     И вновь абстрактный класс
Посмотрите здесь:

Абстрактный класс - C++
Есть базовый абстрактный класс. От него - 2 производных класса. Проблемы: 1) Понимаю, что я не правильно вызываю мои чисто вирт....

Абстрактный класс - C++
#include &lt;iostream.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; #include &lt;windows.h&gt; char bufRus; char* Rus(const char* text) { ...

Абстрактный класс в С++ - C++
Здравствуйте) Начаю изучать классы, можете мне показать абстрактные класс с перегруженным конструктором и наследованием. Например класс...

Абстрактный класс - C++
вот у меня есть классы: class CCommand { public: virtual ~CCommand() {}; virtual void execute(CShape *selection)=0; virtual...

Абстрактный класс - C++
Ребят такая проблема, точнее недопонимания. Реализую графический редактор. Есть базовый абстрактный класс GraphObject От него...

абстрактный класс - C++
не компилирует abcd.cpp //abcd.h #include &lt;cstring&gt; #ifndef _ABCD_H_ #define _ABCD_H_ class ABCd { private: ...

Абстрактный класс - C++
Здравствуйте, скажит пожалуйста: как создать абстрактный базовый класс Triad c виртуальными методами увеличения на 1 ,и производные классы...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
23.11.2013, 12:34     И вновь абстрактный класс #2
И где, собственно, реализация операторов и print?
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
23.11.2013, 13:43  [ТС]     И вновь абстрактный класс #3
Это что-то изменит ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "TBinary.h"
#include <cstring>
#include <iostream>
//=========================================================
//*****************IMLEMENTATION***************************
//=========================================================
 
//=========================================================
//__________________Constructors___________________________
 
//C-tor from string 
TBinary::TBinary(const char* string)
{
    _lenght = strlen(string);
    _head = new char[_lenght];
    memcpy_s(_head, _lenght, string, _lenght);
}
 
//=========================================================
//__________________Input&Output___________________________
 
//output
void TBinary::print(void) const 
{
    std::cout << "TBinary output" << std::endl;
}
 
//=========================================================
//_____________________Operators___________________________
 
//Operator +=
TBinary& TBinary::operator += (const TBinary&) 
{ 
    return *this;
}
 
//Operator -=
TBinary& TBinary::operator -= (const TBinary&) 
{ 
    return *this;
}
 
//Operator *=
TBinary& TBinary::operator *= (const TBinary&) 
{ 
    return *this;
}
Код
1>------ Сборка начата: проект: OOP6, Конфигурация: Debug Win32 ------
1>  TBinary.cpp
1>TBinary.obj : error LNK2001: неразрешенный внешний символ ""public: virtual class TInteger & __thiscall TInteger::operator+=(class TInteger const &)" (??YTInteger@@UAEAAV0@ABV0@@Z)"
1>TBinary.obj : error LNK2001: неразрешенный внешний символ ""public: virtual class TInteger & __thiscall TInteger::operator-=(class TInteger const &)" (??ZTInteger@@UAEAAV0@ABV0@@Z)"
1>TBinary.obj : error LNK2001: неразрешенный внешний символ ""public: virtual class TInteger & __thiscall TInteger::operator*=(class TInteger const &)" (??XTInteger@@UAEAAV0@ABV0@@Z)"
1>C:\Users\Александр\Desktop\OOP6\Debug\OOP6.exe : fatal error LNK1120: неразрешенных внешних элементов: 3
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
23.11.2013, 13:48     И вновь абстрактный класс #4
Это их реализация в классе TBinary. В ошибках же указано, что их нет для TIngeger.
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
23.11.2013, 13:53  [ТС]     И вновь абстрактный класс #5
Хм. Не знал, что для виртуальных операторов абстрактного класса нужно писать реализацию. Спасибо.
0x10
2459 / 1631 / 238
Регистрация: 24.11.2012
Сообщений: 4,009
23.11.2013, 13:55     И вновь абстрактный класс #6
Можно сделать чисто виртуальными, если это не противоречит логике.
Tulosba
23.11.2013, 14:13     И вновь абстрактный класс
  #7

Не по теме:

Цитата Сообщение от Hunter13ua Посмотреть сообщение
>C:\Users\└ыхъёрэфЁ\Desktop\OOP6\Debug\OOP6.exe : fatal error LNK1120: эхЁрчЁх°хээ√ї тэх°эшї ¤ыхьхэЄют: 4
Ошибки доставляют...

Yandex
Объявления
23.11.2013, 14:13     И вновь абстрактный класс
Ответ Создать тему
Опции темы

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