0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 62
1

Ошибка [Linker error] undefined reference to `Vector::Vector(int)'

29.11.2016, 10:29. Показов 3852. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Делал по методички, и почему-то валятся ошибки...
файл lab9_main.cpp
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
#include <iostream>
#include "Vector.h"
int main(){
try
{
Vector x(2);//вектор из двух элементов
Vector y;//пустой вектор
cout<<x;//печать вектора х
cout<<"Nomer?";
int i;
cin>>i;
//вывод элемента с номером i, если номер больше 2 или меньше 0, то
//генерируется исключительная ситуация
cout<<x[i]<<endl;
//добавление элемента в вектор, если MAX_SIZE=2, то генерируется
//исключительная ситуация
y=x+3;
cout<<y;
//удалить один элемент из вектора
--x;
cout<<x;
//удалить один элемент из вектора
--x;
cout<<x;//вектор пустой
//удалить один элемент из вектора
//генерируется исключительная ситуация
--x;
}
//обработчик исключения
catch(int)
{cout<<"ERROR!!!"<<endl;
}//сообщение об ошибке
system("pause");
return 0;
}
файл Vector.cpp
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
90
91
92
93
94
95
#include "Vector.h"
Vector::Vector(int s)
{
//если текущий размер больше максимального, то генерируется исключение
if(s>MAX_SIZE) throw 1;
size=s;
beg=new int [s];
for(int i=0;i<size;i++)
beg[i]=0;
}
Vector::Vector(const Vector &v)
{
size=v.size;
beg=new int [size];
for(int i=0;i<size;i++)
beg[i]=v.beg[i];
}
Vector::~Vector()
{
if (beg!=0) delete[]beg;
}
Vector::Vector(int s,int *mas)
{
//если текущий размер больше максимального, то генерируется исключение
if(s>MAX_SIZE) throw 1;
size=s;
beg=new int[size];
for(int i=0;i<size;i++)
beg[i]=mas[i];
}
const Vector& Vector::operator =(const Vector &v)
{
if(this==&v)return *this;
if(beg!=0) delete []beg;
size=v.size;
beg=new int [size];
for(int i=0;i<size;i++)
beg[i]=v.beg[i];
return*this;
}
ostream& operator<<(ostream&out, const Vector&v)
{
if(v.size==0) out<<"Empty\n";
else
{
for (int i=0;i<v.size;i++)
out<<v.beg[i]<<" ";
out<<endl;
}
return out;
}
istream& operator >>(istream&in, Vector&v)
{
for(int i=0;i<v.size;i++)
{
cout<<">";
in>>v.beg[i];
}
return in;
}
int Vector::operator [](int i)
{
if(i<0)throw 2;//если индекс отрицательный, то генерируется исключение
//если индекс больше размер вектора, то генерируется исключение
if(i>=size) throw error("Vector length more than MAXSIZE\n");
return beg[i];
}
Vector Vector::operator +(int a)
{
//если при добавлении элемента размер вектора станет больше максимального,
//то генерируется исключение
if(size+1==MAX_SIZE) throw 4;
Vector temp(size+1,beg);
temp.beg[size]=a;
return temp;
}
Vector Vector::operator --()
{
//если вектор пустой, то удалить элемент нельзи и генерируется исключение
if(size==0) throw 5;
if (size==1)//если в вектор один элемент
{
size=0;
delete[]beg;
beg=0;
return *this;
};
Vector temp(size,beg);
delete[]beg;
size--;
beg=new int[size];
for(int i=0;i<size;i++)
beg[i]=temp.beg[i];
return*this;
};
файл Vector.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
using namespace std;
const int MAX_SIZE=30;//максимальный размер вектора
class Vector
{
int size;//текущий размер
int *beg;//указатель на начало динамического массива
public:
Vector(){size=0;beg=0;}//конструктор без параметров
Vector(int s);//конструктор с параметром
Vector(int s,int* mas);//конструктор с параметром
Vector(const Vector&v);//конструктор копирования
~Vector();//деструктор
const Vector& operator=(const Vector&v);//операция присваивания
int operator[](int i);//доступ по индексу
Vector operator+(int a);//добавление элемента
Vector operator--();//удаление элемента
//дружественные функции ввода-вывода
friend ostream& operator<<(ostream&out,const Vector&v);
friend istream& operator>>(istream& in, Vector&v);
}
;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2016, 10:29
Ответы с готовыми решениями:

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу &quot;С++ для чайников&quot; Стефан Р. Девис 4-е издание. И...

error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall Vector<int>::Vector<int>(void)" (?0?$Vector@H@@QAE@XZ) в функции _main
//Vector.h #include &lt;iostream&gt; #include &lt;Windows.h&gt; #include &lt;climits&gt; #include &lt;vector&gt;...

[Linker error] undefined reference to `sterling(int, int, int)'
#include &lt;iostream&gt; using namespace std; int sterling(int,int,int); int sterling(int,int); int...

Undefined reference to `Vector::SetElem(int, double)'|
Делал по методичке, но не могу понять, в чем проблема? в гугле что нашел это с названиями или...

10
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
29.11.2016, 11:06 2
Какие ошибки?
Выложите минимальный код, который воспроизводит ошибку(и). И оформите текст нормально - добавьте вертикальных и горизонтальных отступов, пробелов. Читать plain text нет никакого желания.
0
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 62
29.11.2016, 11:36  [ТС] 3
Например такие ошибки:
[Linker error] undefined reference to `Vector::Vector(int)'
[Linker error] undefined reference to `operator<<(std::ostream&, Vector const&)'
[Linker error] undefined reference to `Vector::operator[](int)'
[Linker error] undefined reference to `Vector::operator+(int)'
[Linker error] undefined reference to `Vector::operator=(Vector const&)'
и т.д
0
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
29.11.2016, 12:01 4
Все файлы в проект добавлены? Какой IDE (средой) пользуетесь?
0
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 62
29.11.2016, 12:17  [ТС] 5
Да, все файлы добавил.
Среда DEV-C++ 4.9.9.2
0
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
29.11.2016, 12:29 6
Как разделить программу на модули в Dec C++
Попробуйте сделать по инструкции, отпишитесь о результате.
0
nd2
3434 / 2813 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
29.11.2016, 13:35 7
Цитата Сообщение от Viktor10 Посмотреть сообщение
Да, все файлы добавил.
Среда DEV-C++ 4.9.9.2
Как добавлял?
0
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 62
30.11.2016, 10:25  [ТС] 8
Цитата Сообщение от nd2 Посмотреть сообщение
Сообщение от Viktor10
Да, все файлы добавил.
Среда DEV-C++ 4.9.9.2
Как добавлял?
Через "Add to Project"
0
Форумчанин
Эксперт CЭксперт С++
8194 / 5044 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
30.11.2016, 11:23 9
Цитата Сообщение от Viktor10 Посмотреть сообщение
Через "Add to Project"
Вы сделали с нуля тем способом, что у меня в ссылке и всё равно не работает?
Данная проблема воспроизводится на других проектах?
Попробуйте создать тривиальный пример. Запихните в .h файл объявление функции, в .cpp определение, в другой (main.cpp) вызовите эту функцию. И отпишитесь о результате.
0
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 62
30.11.2016, 11:41  [ТС] 10
Цитата Сообщение от MrGluck Посмотреть сообщение
Вы сделали с нуля тем способом, что у меня в ссылке и всё равно не работает?
Данная проблема воспроизводится на других проектах?
Попробуйте создать тривиальный пример. Запихните в .h файл объявление функции, в .cpp определение, в другой (main.cpp) вызовите эту функцию. И отпишитесь о результате.
Все получилось, одном месте забыл добавить #include <iostream>
0
nd2
3434 / 2813 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
30.11.2016, 15:16 11
Цитата Сообщение от Viktor10 Посмотреть сообщение
Все получилось, одном месте забыл добавить #include <iostream>
И это вызывало такие ошибки?
Цитата Сообщение от Viktor10 Посмотреть сообщение
Например такие ошибки:
[Linker error] undefined reference to `Vector::Vector(int)'
[Linker error] undefined reference to `operator<<(std::ostream&, Vector const&)'
[Linker error] undefined reference to `Vector::operator[](int)'
[Linker error] undefined reference to `Vector::operator+(int)'
[Linker error] undefined reference to `Vector::operator=(Vector const&)'
и т.д
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2016, 15:16
Помогаю со студенческими работами здесь

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H ...

Ошибка [Linker error] undefined reference to `__dyn_tls_init_callback'
Вот такие ошибки появляются : Ошибка undefined reference to `__dyn_tls_init_callback' ...

Ошибка [Linker error] undefined reference to `_imp___ZN2sf7TextureC1Ev' В Dev C++
Всем привет. Я новичок . связался с компилятором Dev c++ и пишу один проект ... Вот мой код ...

Как можно увеличить размер вектора, который является элементом вектора vector<vector<int>>arr(n, vector <int>)
Написал программу, которая создает вектор 'а' векторов 'b', вектора 'b' содержат 2 числа. Стало...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru