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

Переопределение оператора в классе - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ сравнивание переменной с массивом(чисел) http://www.cyberforum.ru/cpp-beginners/thread341191.html
есть массив int mass = {1,2,3,4,5,6,7,8,9} как сравнить переменную с массивом?
C++ Преобразование строки в целое Может вопрос и глупый, но я все равно не догоняю... В функции что означает 3 параметр: char *_itoa( int value, char *str, int radix ); http://www.cyberforum.ru/cpp-beginners/thread341186.html
C++ Создание бота. Эмуляция клавиатуры, мыши.
Попросили написать простенький бот для одной корейской онлайн игрушки. Сразу столкнулся с проблемой сабжа - игрушка защищена православным GameGuard'ом и напрочь игнорирует Keybd_event, sendkeys etc. В добавок там используется DirectInput. Как я понимаю, в этом случае требуется писать опкоды непосредственно в буфер клавиатуры и ждать пока игрушка их проглотит. Учитывая мой уровень навыков...
Дейтел. Помощь в решении задач из книги C++
Добрый день. Начал изучение С++ по книге "Как программировать на С++" 5 издание. Установлена IDE Code::Blocks компилятор GCC. Не могу решить задачку 3.11. Где надо модифицировать класс GradeBook. Мое решение: GradeBook.h #include <string>
C++ классы http://www.cyberforum.ru/cpp-beginners/thread341115.html
Всем привет! Есть такое задание: Создайте программу с классом Team, который включает в себя следующие данные об участниках спортивных соревнований: ФИО игрока, игровой номер, возраст, рост, вес. В класс входят следующие элементы-функции: конструктор с параметрами, деструктор, функция просмотра текущего состояния объектов PRINT(); функция-друг, которая выведет информацию о самом легком...
C++ Сравнение шестнадцатеричных форм Такая задача:считать из потока 2-байтовое число, перевести в 16-ричную систему счисления и сравнить с заданным 16-ричным числом. помогите с решением.очень надо.. подробнее

Показать сообщение отдельно
SatOleg
0 / 0 / 0
Регистрация: 05.08.2011
Сообщений: 30
12.08.2011, 11:57  [ТС]     Переопределение оператора в классе
Цитата Сообщение от silent_1991 Посмотреть сообщение
lazybiz, а чем строки принципиально в этом плане отличаться будут? Тут мы вместо Foo подсовываем int, который принимает конструктор, там вместо String подсунем char, который тоже будет принимать конструктор.

Добавлено через 20 минут
lazybiz, SatOleg, вот приблизительный пример со строками:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
#include <iostream>
#include <cstring>
 
class String
{
public:
    String(const char *string):
    m_size(strlen(string)),
    m_string(new char [m_size])
    {
        strncpy(m_string, string, m_size);
    }
 
    String(char c):
    m_size(1),
    m_string(new char [m_size])
    {
        m_string[0] = c;
    }
 
    ~String()
    {
        delete [] m_string;
    }
 
    void print() const
    {
        for (size_t i = 0; i < m_size; ++i)
            std::cout << m_string[i];
    }
 
    friend String operator+(const String &, const String &);
 
    String &operator=(const String &right)
    {
        if (this != &right)
        {
            delete [] m_string;
 
            m_size = right.m_size;
 
            m_string = new char [m_size];
 
            strncpy(m_string, right.m_string, right.m_size);
        }
 
        return *this;
    }
 
private:
    size_t m_size;
    char *m_string;
};
 
String operator+(const String &left, const String &right)
{
    char *sum = new char [left.m_size + right.m_size + 1];
 
    strncpy(sum, left.m_string, left.m_size);
    strncpy(sum + left.m_size, right.m_string, right.m_size);
 
    sum[left.m_size + right.m_size] = '\0';
 
    return String (sum);
}
 
int main()
{
    String s1 = "abc";
    String s2 = "def";
    String s3 = s1 + s2;
 
    s3 = s3 + 'x';
    s3 = 'x' + s3;
 
    s3.print();
 
    return 0;
}
Мне кажется все таки конструктор должен быть
C++
1
2
3
4
5
6
7
    String(char c):
    m_size(1),
    m_string(new char [m_size])
    {
        m_string[0] = c;
        m_string[1] = '\0';
    }
Добавлено через 56 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class String
{
 
  char *mData;
  static const int c_size = 100;
....
public:
friend istream & operator>> (istream &str, String &s);
...
}
 
istream & operator>> (istream &str, String &s)
{
   char* Data;
   str >> Data;
   s.mData = Data;
   return str;
}
Выпадает с кучей ошибок типа

20 `istream' is neither function nor member function; cannot be declared friend
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru