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

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

Восстановить пароль Регистрация
 
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
23.11.2013, 12:04     И вновь абстрактный класс #1
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
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
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
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
23.11.2013, 13:48     И вновь абстрактный класс #4
Это их реализация в классе TBinary. В ошибках же указано, что их нет для TIngeger.
Hunter13ua
46 / 46 / 5
Регистрация: 25.10.2011
Сообщений: 183
23.11.2013, 13:53  [ТС]     И вновь абстрактный класс #5
Хм. Не знал, что для виртуальных операторов абстрактного класса нужно писать реализацию. Спасибо.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
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     И вновь абстрактный класс
Ответ Создать тему
Опции темы

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