Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179

Unresolved externals в ооп

27.05.2014, 23:56. Показов 884. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, переделывал конструкторы в одной лабе, вроде все сделал, но теперь выдает две ошибки 2019 и соответственно одну 1120. Не могу найти, не поможете? Буду очень признателен.
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <iostream>
#include <fstream>
#pragma warning(disable : 4996)
class vectr{
    int *v;
    int vlength;
public:
    vectr(); // дефолтный конструктор для возможности создания массива
    vectr(int vlength);
    int& operator[](int i);
    vectr operator+(vectr &t);
    vectr operator=(vectr &t);
    friend ostream& operator<<(ostream& as, vectr& u);
};
vectr::vectr(int vlength)
{ // n - это количество векторов, а count - количество цифр в векторе
    v = new int[vlength];
}
int& vectr::operator[](int i)
{
    return v[i];
}
vectr vectr::operator+(vectr &t)
{
    vectr temp;
    for (int i = 0; i < vlength; i++)
        temp.v[i] = v[i] + t.v[i];
    return temp;
}
vectr vectr::operator=(vectr &t)
{
    for (int i = 0; i < vlength; i++)
        v[i] = t.v[i];
    return *this;
}
 
ostream& operator<<(ostream& as, vectr& u)
{
    for (int i = 0; i < u.vlength; i++)
        as << u.v[i] << " ";
    cout << endl;
    return as;
}
 
class matrix : private vectr
{
    vectr v;
    vectr *b;
public:
    int n; int vlength;
    matrix();
    matrix(int n, int vlength);
    void entervalue()
    {
        for (int j = 0; j < n; j++) {
            cout << "entering new vector" << endl;
            for (int i = 0; i < vlength; i++)
            {
                cin >> v[i];
                b[j] = v;
            }
        }
 
        cout << endl;
        for (int i = 0; i < n; i++)
            cout << b[i];
    }
    matrix operator+(matrix &t);
    matrix operator=(matrix &t);
    vectr& operator[](int i);
    friend ostream& operator<<(ostream& as, matrix& u);
};
matrix::matrix(int n, int vlength)
{
    b = new vectr[n];
}
matrix matrix::operator=(matrix &t)
{
    for (int i = 0; i < n; i++)
        b[i] = t.b[i];
    return *this;
}
matrix matrix::operator+(matrix &t)
{
    matrix temp;
    for (int i = 0; i < n; i++)
        temp.b[i] = b[i] + t.b[i];
    return temp;
}
vectr& matrix::operator[](int i)
{
    return b[i];
}
 
ostream& operator<<(ostream& as, matrix& u)
{
    cout << endl;
    for (int i = 0; i < u.n; i++)
        as << u.b[i];
    return as;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n;
    int vlength; // длина вектора
    cout << "enter number of vectors" << endl;
    cin >> n;
    cout << "enter length of vector" << endl;
    cin >> vlength;
    // сделаем матрицу векторов.
    matrix Mt(n, vlength);
    Mt.entervalue();
    cout << "testing << operator for matrix class";
    cout << Mt;
    cout << "testing = operator for matrix class";
    matrix testm(n, vlength);
    cout << "enter second matrix" << endl;
    testm.entervalue();
    Mt = testm;
    cout << Mt;
    cout << "now testing + operator" << endl;
    testm = Mt + Mt;
    cout << testm;
    return 0; // переделать для работы с шаблонами
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.05.2014, 23:56
Ответы с готовыми решениями:

Unresolved externals
Здравствуйте. Объявил такую функцию : std::string SplitFileName ( std::string&amp; data) { std::string fileName; int i =...

3 unresolved externals
#include &lt;iostream&gt; #include &lt;string&gt; #include &quot;conio.h&quot; #include &lt;vector&gt; #include &lt;set&gt; #include &lt;numeric&gt; using namespace...

Учебное расписание: Unresolved externals
Добрый день! Мне нужно создать программу в Microsoft Visual Studio 2005 для введения данных, их вывода на экран и проверкой правильности...

15
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
28.05.2014, 00:01
Цитата Сообщение от Newchap Посмотреть сообщение
Не могу найти
компилятор пишет же что не так
0
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:09  [ТС]
Croessmah, Вот что пишет компилятор. Я пробовал понять в чем дело, но недопер. Не могли бы подсказать? просто ничего не менял кроме конструкторов
1)
Error 1 error LNK2019: unresolved external symbol "public: __thiscall vectr::vectr(void)" (??0vectr@@QAE@XZ) referenced in function "public: __thiscall matrix::matrix(int,int)" (??0matrix@@QAE@HH@Z) C:\Users\User\Desktop\Документы\учеба\пр ограммирование\ООП\Lab3\oop3\ConsoleAppl ication1\ConsoleApplication1.obj ConsoleApplication1

2)
Error 2 error LNK2019: unresolved external symbol "public: __thiscall matrix::matrix(void)" (??0matrix@@QAE@XZ) referenced in function "public: class matrix __thiscall matrix::operator+(class matrix &)" (??Hmatrix@@QAE?AV0@AAV0@@Z) C:\Users\User\Desktop\Документы\учеба\пр ограммирование\ООП\Lab3\oop3\ConsoleAppl ication1\ConsoleApplication1.obj ConsoleApplication1
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2014, 00:19
Нет реализаций конструкторов по умолчанию.
0
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:21  [ТС]
alsav22, Вы не могли бы по-подробнее?
Честно не врубаюсь
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2014, 00:22
Цитата Сообщение от Newchap Посмотреть сообщение
vectr(); // дефолтный конструктор для возможности создания массива
Прототип есть - реализации нет.
1
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:27  [ТС]
alsav22, Окей, понял.
Только теперь вопрос, как её сделать, вернее, что там должно быть? Я её написал, чтобы была возможность создать массив, ошибку выдавать перестало, но возникла эта проблема с unresolved externals

Добавлено через 1 минуту
вообще, наугад прописав
C++
1
vectr(); {}
ошибка прошла, одна из, только почему? Ничего не понимаю
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2014, 00:41
Цитата Сообщение от Newchap Посмотреть сообщение
ошибка прошла, одна из, только почему? Ничего не понимаю
Цитата Сообщение от alsav22 Посмотреть сообщение
Нет реализаций конструкторов по умолчанию.
Текст ошибки смотрите, там же написано чего ещё нет.
Цитата Сообщение от Newchap Посмотреть сообщение
matrix::matrix(void)
0
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:44  [ТС]
alsav22, смотрю, но честно не вижу в чем дело.
не могли бы привести пример как это исправить?
0
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2014, 00:51
Цитата Сообщение от Newchap Посмотреть сообщение
matrix();
...
Цитата Сообщение от alsav22 Посмотреть сообщение
Прототип есть - реализации нет.
0
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:53  [ТС]
alsav22, Да я понял, что реализации нет.
Я просто не понимаю что можно в данном конструкторе по умолчанию реализовать, чтобы прога работала.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
28.05.2014, 02:06
Цитата Сообщение от Newchap Посмотреть сообщение
Я просто не понимаю что можно в данном конструкторе по умолчанию реализовать, чтобы прога работала.
Можете там написать код проигрывания порно, например
Мы то откуда знаем че Вы там затеяли?
0
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 08:36  [ТС]
Croessmah, Идея собственно была такая, есть класс вектор, есть класс матрица.
Матрица - массив векторов. И есть два конструктора, один с параметрами, другой пустой(с которым проблема).
Параметрический конструктор работает, а пустой конструктор используется для создания массивов
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
28.05.2014, 09:29
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class vectr{
    int *v;
    int vlength;
public:
    vectr(); // дефолтный конструктор для возможности создания массива
    vectr(int vlength);
    int& operator[](int i);
    vectr operator+(vectr &t);
    vectr operator=(vectr &t);
    friend ostream& operator<<(ostream& as, vectr& u);
};
vectr::vectr()
{ 
    v = NULL;
}
vectr::vectr(int vlength)
{ // n - это количество векторов, а count - количество цифр в векторе
    v = new int[vlength];
}
1
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 16:24  [ТС]
SatanaXIII, Собственно сделал как вы сказали, аналогично для класса матрица.
Только какой-то странный результат. Прога компилится, но не выполняет действий. Т.е. надписи выводит, а вот сами действия не рабочие.
Croessmah,

Добавлено через 56 минут
Вопрос на паузе)

Добавлено через 33 минуты
Исправил это дело, только теперь при запуске функции enterarray повисает. Также, во время заполнения вектора заполняет только четные числа, нечетные почему-то пропускает. От чего вообще не знаю. Помогите плиз
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
// ConsoleApplication1.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
using namespace std;
#include <iostream>
#include <fstream>
#pragma warning(disable : 4996)
class vectr{
    int *v;
    int vlength;
public:
    vectr(); // дефолтный конструктор для возможности создания массива
    vectr(int vlength);
 
    int& operator[](int i);
    vectr operator+(vectr &t);
    vectr operator=(vectr &t);
    friend ostream& operator<<(ostream& as, vectr& u);
};
vectr::vectr(int vlength2)
{ // n - это количество векторов, а count - количество цифр в векторе
    vlength = vlength2;
    cout << vlength << endl << vlength2<<endl;
     v = new int[vlength];
}
vectr::vectr()
{ // n - это количество векторов, а count - количество цифр в векторе
    v = NULL;
}
int& vectr::operator[](int i)
{
    return v[i];
}
vectr vectr::operator+(vectr &t)
{
    vectr temp;
    for (int i = 0; i < vlength; i++)
        temp.v[i] = v[i] + t.v[i];
    return temp;
}
vectr vectr::operator=(vectr &t)
{
    for (int i = 0; i < vlength; i++)
        v[i] = t.v[i];
    return *this;
}
 
ostream& operator<<(ostream& as, vectr& u)
{
    for (int i = 0; i < u.vlength; i++)
        as << u.v[i]<<" ";
    cout << endl;
    return as;
}
 
class matrix : private vectr
{
    vectr v;
    vectr *b;
public:
    int n; int vlength;
    matrix();
    matrix(int n2, int vlength2);
    void entervalue()
    {
        for (int j = 0; j < n; j++) {
            cout << "entering new vector" << endl;
            for (int i = 0; i < vlength; i++)
            {
                cin >> v[i];
                b[j] = v; 
            }
        }
 
        cout << endl;
        for (int i = 0; i < n; i++)
            cout << b[i];
    }
 
    matrix operator+(matrix &t);
    matrix operator=(matrix &t);
    vectr& operator[](int i);
    friend ostream& operator<<(ostream& as, matrix& u);
};
matrix::matrix(int n2, int vlength2)
{   
    n = n2; vlength = vlength2;
b = new vectr[n];
}
matrix::matrix()
{
    b = 0;
}
matrix matrix::operator=(matrix &t)
{
    for (int i = 0; i < n; i++)
        b[i] = t.b[i];
    return *this;
}
matrix matrix::operator+(matrix &t)
{
    matrix temp;
    for (int i = 0; i < n; i++)
        temp.b[i] = b[i] + t.b[i];
    return temp;
}
vectr& matrix::operator[](int i)
{
    return b[i];
}
 
ostream& operator<<(ostream& as, matrix& u)
{
    cout << endl;
    for (int i = 0; i < u.n; i++)
        as << u.b[i];
    return as;
}
 
int _tmain(int argc, _TCHAR* argv[])
{ 
int n;
int vlength; // длина вектора
    cout << "enter number of vectors" << endl;
 cin >> n;
 cout << "enter length of vector" << endl;
 cin >> vlength;
 cout << "testing vectr class" << endl;
 vectr v2(vlength);
 for (int i = 0; i < vlength; i++)
     v2[i] = i++;
 for (int i = 0; i < vlength; i++)
 cout << v2[i]<<" ";
    // сделаем матрицу векторов.
    matrix Mt(n,vlength);
    Mt.entervalue();
    cout << "testing << operator for matrix class";
    cout << Mt;
    cout << "testing = operator for matrix class";
    matrix testm(n, vlength);
    cout << "enter second matrix"<<endl;
    testm.entervalue();
    Mt = testm;
    cout << Mt;
    cout << "now testing + operator" << endl;
        testm = Mt + Mt;
        cout << testm;
    return 0; // переделать для работы с шаблонами
}
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
28.05.2014, 16:44
Ох.
C++
22
23
24
25
vectr::vectr(int vlength) // Передали сколько элементов требуется создать
{ 
     v = new int[vlength]; // Выделили память
}
В конструктор с параметром вы передаете количество элементов в векторе. Внутри конструктора, оператором new выделяется память под них.

C++
1
2
3
4
vectr::vectr() // Ничего не передаете
{ 
    v = NULL; // Следовательно вектор пуст
}
В конструктор без параметров ничего не передается. Он создает пустой вектор, в котором ноль элементов. Но, чтобы как-то просигнализировать об этом, нужно занулить указатель.

Далее в коде вы должны будете проверить указатель на равенство нулю и в зависимости от этого уже действовать. К примеру нельзя обратиться к элементу пустого вектора. Логично? Следовательно надо предварительно почти в каждом методе проверять пуст ли вектор.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2014, 16:44
Помогаю со студенческими работами здесь

Ошибка LNK1120: 4 unresolved externals
Добрый день. Помогите решить проблему с возникающей ошибкой. Причину самостоятельно найти не могу. Заранее благодарен! Содержание...

Unresolved externals при подключении mpi
Здравствуйте! Установил библиотеку MPI с оффсайта. Написал вот такой кодик. Программа при компиляции выдает ошибки на каждый метод из этой...

LNK1120: 2 unresolved externals | Glew | GLFW
Выходит ошибки при компелирование кода, надеюсь кто-нибудь подскажет, в чем может быть проблема. Библиотеки вроде все прелинковал Код:...

В линейном алгоритме выдает ошибку: 1 unresolved externals
пишу на Visual C++ 2012 (сюда обратился так как знающего люду больше) выдает ошибку - помогите кто чем может ошибка такая: fatal error...

FATAL ERROR LNK1120: 1 unresolved externals SOS!
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; int main() { int a, factorial(int i); int x=0; int i,b,k=0; ...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита табличной части. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru