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

class String, error lnk - C++

Восстановить пароль Регистрация
 
karl 777
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 58
27.08.2013, 11:03     class String, error lnk #1
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
80
81
82
83
84
85
86
87
88
89
    class String
    {
        friend std::istream& operator>>(std::istream&, String&);            // Функция ввода
    public:
        typedef Vec<char>::size_type size_type;
 
        operator char*();                                                   // Оператор преобразования String - объекта в массив символов с признаком конца строка на конце
        operator const char*() const;
        operator Vec<char>();
 
        String() {};                                                        // Конструктор, создающий пустой объект
        String(size_type n, const char c) : data(n,c) {};                   // Инициализарует string-объект тем, что заполняет n символов копией с
        String(const char* ch)                                              // Копирует из массива-char в string-объект
        {
            copy(ch, ch+strlen(ch), back_inserter(data));
        }
 
        template<class in> 
        String(in b, in e)                                                  // Конструктор, который копирует и инициализирует элементы
        {
            copy(b, e, back_inserter(data));
        }
 
        size_type size() const
        {
            return data.size();
        }
 
        char& operator[](size_type i)                                       // Оператор доступа к произвольному элементу string-объекта
        {
            return data[i];
        }
        const char& operator[](size_type i) const
        {
            return data[i];
        }
 
        String& operator+=(const String& s)
        {
            std::copy(s.data.begin(), s.data.end(), std::back_inserter(data));
            return *this;                                       // Возвращает указатель на себя
        }
 
    private:
        Vec<char> data;
    };
 
//----------------------------------------------
 
    std::istream& operator>>(std::istream& is, String& s)                   // Функция ввода
    {
        s.data.clear();                                         // Очищаем все прошлые значения
 
        char c;
        while(is.get(c) && isspace(c));                         // Игнорируем не значащие пробелы или подобные знаки
 
        if(is)                                                  // Если что-то есть
        {
            do
            {
                s.data.push_back(c);                            // Пока это не пробел и не конец строки добавляй в s
            }
            while(is.get(c) && !isspace(c));
 
            if(is)                                              // Если выпали из цикла do-while из-за пробела, то
                is.unget();                                     // Отмена последнего результата выполнения функции get
        }
        return is;
    }
 
//----------------------------------------------
 
    std::ostream& operator<<(std::ostream& os, String& s)                   // Функция вывода
    {
        for (String::size_type i=0; i<s.size(); ++i)
            os<<s[i];
        return os;
    }
 
//----------------------------------------------
 
    String operator+(const String& s1, const String& s2)                    // Оператор суммирования
    {
        String m=s1;
        m+=s2;
        return m;
    }
 
//----------------------------------------------
При попытке сложения двух string объектов, например
C++
1
cout<<s1+s2;
, компилятор выдает error lnk2028, 2019, 1120. Помогите разобраться в чем ошибка?
Миниатюры
class String, error lnk  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.08.2013, 11:03     class String, error lnk
Посмотрите здесь:

C++ error lnk 2019
Error LNK 2019. VS 2010 C++
C++ Как используя C-String а потом и String class варьировать вывод?
Работа с tinyxml ошибки LNK 2019 и LNK 2001 C++
error lnk? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4844 / 2983 / 367
Регистрация: 10.11.2010
Сообщений: 11,021
Записей в блоге: 10
Завершенные тесты: 1
27.08.2013, 11:15     class String, error lnk #2
cout << (s1 + s2);
Atlant_V
8 / 8 / 1
Регистрация: 14.08.2013
Сообщений: 99
27.08.2013, 13:23     class String, error lnk #3
там разные приоритеты операций, поэтому надо брать в дужки, как и написал castaway
karl 777
0 / 0 / 0
Регистрация: 29.06.2013
Сообщений: 58
27.08.2013, 13:37  [ТС]     class String, error lnk #4
Дело не в конкретном примере. Оператор суммирования отказывается работать, выводя эти три ошибки.
C++
1
2
s=s1+s2;
cout<<s;
Такая вариация тоже приведет к ошибке. И в чем дело не могу понять.
Yandex
Объявления
27.08.2013, 13:37     class String, error lnk
Ответ Создать тему
Опции темы

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