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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Newchap
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
#1

Unresolved externals в ооп - C++

27.05.2014, 23:56. Просмотров 267. Ответов 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; // переделать для работы с шаблонами
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2014, 23:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Unresolved externals в ооп (C++):

3 unresolved externals - C++
#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 - C++
Здравствуйте. Объявил такую функцию : std::string SplitFileName ( std::string&amp; data) { std::string fileName; int i =...

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
28.05.2014, 00:01 #2
Цитата Сообщение от Newchap Посмотреть сообщение
Не могу найти
компилятор пишет же что не так
Newchap
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:09  [ТС] #3
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\ConsoleApplication1\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\ConsoleApplication1\ConsoleApplication1.obj ConsoleApplication1
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2014, 00:19 #4
Нет реализаций конструкторов по умолчанию.
Newchap
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:21  [ТС] #5
alsav22, Вы не могли бы по-подробнее?
Честно не врубаюсь
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2014, 00:22 #6
Цитата Сообщение от Newchap Посмотреть сообщение
vectr(); // дефолтный конструктор для возможности создания массива
Прототип есть - реализации нет.
Newchap
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:27  [ТС] #7
alsav22, Окей, понял.
Только теперь вопрос, как её сделать, вернее, что там должно быть? Я её написал, чтобы была возможность создать массив, ошибку выдавать перестало, но возникла эта проблема с unresolved externals

Добавлено через 1 минуту
вообще, наугад прописав
C++
1
vectr(); {}
ошибка прошла, одна из, только почему? Ничего не понимаю
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2014, 00:41 #8
Цитата Сообщение от Newchap Посмотреть сообщение
ошибка прошла, одна из, только почему? Ничего не понимаю
Цитата Сообщение от alsav22 Посмотреть сообщение
Нет реализаций конструкторов по умолчанию.
Текст ошибки смотрите, там же написано чего ещё нет.
Цитата Сообщение от Newchap Посмотреть сообщение
matrix::matrix(void)
Newchap
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:44  [ТС] #9
alsav22, смотрю, но честно не вижу в чем дело.
не могли бы привести пример как это исправить?
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
28.05.2014, 00:51 #10
Цитата Сообщение от Newchap Посмотреть сообщение
matrix();
...
Цитата Сообщение от alsav22 Посмотреть сообщение
Прототип есть - реализации нет.
Newchap
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 00:53  [ТС] #11
alsav22, Да я понял, что реализации нет.
Я просто не понимаю что можно в данном конструкторе по умолчанию реализовать, чтобы прога работала.
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
28.05.2014, 02:06 #12
Цитата Сообщение от Newchap Посмотреть сообщение
Я просто не понимаю что можно в данном конструкторе по умолчанию реализовать, чтобы прога работала.
Можете там написать код проигрывания порно, например
Мы то откуда знаем че Вы там затеяли?
Newchap
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 08:36  [ТС] #13
Croessmah, Идея собственно была такая, есть класс вектор, есть класс матрица.
Матрица - массив векторов. И есть два конструктора, один с параметрами, другой пустой(с которым проблема).
Параметрический конструктор работает, а пустой конструктор используется для создания массивов
SatanaXIII
Супер-модератор
Эксперт С++
5609 / 2643 / 244
Регистрация: 01.11.2011
Сообщений: 6,502
Завершенные тесты: 1
28.05.2014, 09:29 #14
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];
}
Newchap
4 / 4 / 1
Регистрация: 17.09.2013
Сообщений: 179
28.05.2014, 16:24  [ТС] #15
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; // переделать для работы с шаблонами
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2014, 16:24
Привет! Вот еще темы с ответами:

FATAL ERROR LNK1120: 1 unresolved externals SOS! - C++
#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; ...

Помогите исправить ошибку в коде (fatal error LNK1120: unresolved externals) я новичек - C++
Народ, всем доброго вечера! помогите пожалуйста найти линк еррор. Вот мой код // SavingsAccount.h #ifndef SAVINGSACCOUNT_H #define...

Unresolved external symbol, unresolved token - C++
Всем привет. У меня тут такое дело: // learncpp.cpp : main project file. #include &quot;stdafx.h&quot; int main() { const int...

unresolved external - C++
Имеется сольюшн из 3х файлов: List.h: #include &quot;stdafx.h&quot; #ifndef _LIST_H_ #define _LIST_H_ template &lt;class X&gt; class List { ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
28.05.2014, 16:24
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru