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

Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ - C++

Восстановить пароль Регистрация
 
ГузелькаС
5 / 5 / 0
Регистрация: 04.12.2011
Сообщений: 178
06.05.2014, 19:03     Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ #1
Возникает такая ошибка:
1 error LNK2019: ссылка на неразрешенный внешний символ "public: class three __thiscall three::operator=(class three)" (??4three@@QAE?AV0@V0@@Z) в функции _main C:\Users\-----


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
#include "stdafx.h"
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
 
class three
{
    int x,y,z;
public:
    three(){x=y=z=0;}
    int getX() const;
    int getY() const;
    int getZ() const;
    three(int i, int j,int k){x=i;y=j;z=k;}
    three operator+(three &op2);
    three operator=(three op2);
    three operator++();
    void Show(void);
};
 
void three::Show(void)
{
    setlocale(LC_ALL,"");
    cout<<" "<<x<<" "<<y<<" "<<y<<endl;
}
int three::getX() const{return x;}
int three::getY() const{return y;}
int three::getZ() const{return z;}
three three::operator+(const three &a)
{
    return three(x+a.getX(),y+a.getY(),z+a.getZ());
}
 
int main()
{
    setlocale(LC_ALL,"");
 
three a(1,2,3),b(10,10,10),c;
a.Show();
b.Show();
c=a+b; //вот если эту строку убираю, то нормально работает. Видимо, я неправильно переопределила операцию +
c.Show();
    system("pause");
    return 0;
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2014, 19:03     Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ
Посмотрите здесь:

Не могу разобраться где ошибка!error LNK2019: ссылка на неразрешенный внешний символ C++
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ C++
Ошибка линковщика(error LNK2019: ссылка на неразрешенный внешний символ _main в функции ___tmainCRTStartup) C++
C++ Структуры/Работа с файлами(ошибка линковщика error LNK2019: ссылка на неразрешенный внешний символ)
Ошибка линковки - error LNK2019: ссылка на неразрешенный внешний символ C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,210
Завершенные тесты: 1
06.05.2014, 19:14     Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ #2
ГузелькаС, обратите внимание на различие сигнатур функций в строках 16 и 30, заметили разницу?
ГузелькаС
5 / 5 / 0
Регистрация: 04.12.2011
Сообщений: 178
06.05.2014, 19:18  [ТС]     Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ #3
Заметила, но пока не особо понимаю, как исправить это.
Метод "тык"а тоже пока не помогает.
C++
1
2
3
4
5
three operator+(const three &);
three three::operator+(const three &a)
{
    return three(x+a.getX(),y+a.getY(),z+a.getZ());
}
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,210
Завершенные тесты: 1
06.05.2014, 20:01     Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ #4
где реализация вот этого оператора three operator=(three op2); ?
ГузелькаС
5 / 5 / 0
Регистрация: 04.12.2011
Сообщений: 178
06.05.2014, 20:08  [ТС]     Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ #5
я их пока не сделала. проблема из за этого?

Добавлено через 5 минут
закомментировала их. заработало) спасибо) а код переопределения у меня правильно написано ? а то я только методом "тык"а
schdub
 Аватар для schdub
2902 / 1246 / 222
Регистрация: 19.01.2009
Сообщений: 3,210
Завершенные тесты: 1
06.05.2014, 20:13     Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ #6
Сообщение было отмечено автором темы, экспертом или модератором как ответ
ГузелькаС,
C++
1
2
3
4
5
6
7
8
three& three::operator=(const three & rhs) {
    if (this != &rhs) {
        this->x = rhs.x;
        this->y = rhs.y;
        this->z = rhs.z;
    }
    return *this;
}
Добавлено через 2 минуты
Цитата Сообщение от ГузелькаС Посмотреть сообщение
а код переопределения у меня правильно написано ? а то я только методом "тык"а
да. так же поправьте определение operator= как у меня в предыдущем посте.
Yandex
Объявления
06.05.2014, 20:13     Переопределение операции. Ошибка Error LNK2019: ссылка на неразрешенный внешний символ
Ответ Создать тему
Опции темы

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