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

error LNK1120 - C++

Восстановить пароль Регистрация
 
Smillles7
25 / 25 / 1
Регистрация: 23.04.2011
Сообщений: 130
30.10.2011, 21:42     error LNK1120 #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
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <vector>
using namespace std;
const int n=3;
int s=2;
int k=0;
int p=0;
int f=k;
class reversion
{ 
    vector<int> mass1;
    vector<int> mass2;
    vector<int> rev1;
    vector<int> rev2;
    vector<int> mult1;
    vector<int> mult2;
    int len;
    public:
    reversion(){len=0;}
    void record();
    void record1();
    void multiplication();
    void displaymultiplication();
    reversion& operator *();
    reversion& operator +();
};
void reversion::record()
{ 
    int x=1;
    int i=0;
    cout<<"Введите 1 массив"<<endl;
    cin>>x;
    for(int i=1;i<=x;i++)
        mass1.push_back(i);
    for(int i=0;i<x;i++)
        cout<<mass1[i]<<" ";
    cout<<endl;
    x=1;
    i=0;
    cout<<"Введите 1 перестановку"<<endl;
        for(int i=0;x!=0;i++)
        {
            cin>>x;
            if(x!=0)
            {
                rev1.push_back(x);
                k++;
            }
        }
        int z=0;
        for(int i=k-1;i>=0;i--)
            if(mass1[i]==rev1[i])
            {
                mass1.pop_back();
                rev1.pop_back();
                z++;
            }
            else
                break;
            k=k-z;
}
void reversion::record1()
{
    int x=1;
    int i=0;
    cout<<"Введите 2 массив"<<endl;
    cin>>x;
    for(int i=1;i<=x;i++)
        mass2.push_back(i);
    for(int i=0;i<x;i++)
        cout<<mass2[i]<<" ";
    cout<<endl;
        x=1;
        i=0;
    cout<<"Введите 2 перестановку"<<endl;
    for(int i=0;x!=0;i++)
        {
            cin>>x;
            if(x!=0)
            {
                rev2.push_back(x);
                p++;
            }
        }
        int z=0;
        for(int i=p-1;i>=0;i--)
            if(mass2[i]==rev2[i])
            {
                mass2.pop_back();
                rev2.pop_back();
                z++;
            }
            else
                break;
            p=p-z;
    cout<<endl;
}
reversion& reversion::operator *()
{
    f=k;
    int z=0;
    if(k>p)
    {
        f=k;
        for(int i=p;i<k;i++)
        {
            mass2.push_back(i+1);
            rev2.push_back(i+1);
        }
    {
    for(int i=0;i<k;i++)
        cout<<mass1[i]<<" ";
    cout<<endl;
    for(int i=0;i<k;i++)
        cout<<rev1[i]<<" ";
    cout<<endl<<endl;
    for(int i=0;i<k;i++)
        cout<<mass2[i]<<" ";
    cout<<endl;
    for(int i=0;i<k;i++)
        cout<<rev2[i]<<" ";
    cout<<endl;
}
    }
    if(k<p)
    {
        f=p;
        for(int i=k;i<p;i++)
        {
            mass1.push_back(i+1);
            rev1.push_back(i+1);
        }
        {
    for(int i=0;i<p;i++)
        cout<<mass1[i]<<" ";
    cout<<endl;
    for(int i=0;i<p;i++)
        cout<<rev1[i]<<" ";
    cout<<endl<<endl;
    for(int i=0;i<p;i++)
        cout<<mass2[i]<<" ";
    cout<<endl;
    for(int i=0;i<p;i++)
        cout<<rev2[i]<<" ";
    cout<<endl;
}
    }
    
    int k=0;
    for(int i=0;i<f;i++)
    {
        k=rev1[i];
        for(int j=0;j<f;j++)
        {
            if(mass2[j]==k)
                mult2.push_back(rev2[j]);
        }
    }
    return *this;
}
reversion& reversion::operator +()
{
    cout<<"Умножение"<<endl;
    for(int i=0;i<f;i++)
        mult1.push_back(mass1[i]);
    for(int j=0;j<f;j++)
        cout<<mult1[j]<<" ";
    cout<<endl;
    for(int i=0;i<f;i++)
        cout<<mult2[i]<<" ";
    cout<<endl;
    return *this;
}
void main()
{  
    setlocale (LC_ALL,"RUS");
    reversion z;
    reversion A;
    reversion B;
    z=+*(A,B);
    getch();
}
выдает ошибку error LNK1120
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OLLEGATOR
Linux-оид
 Аватар для OLLEGATOR
115 / 64 / 3
Регистрация: 15.02.2011
Сообщений: 353
30.10.2011, 21:58     error LNK1120 #2
Не хватает либо c/cpp файла, c реализацией, либо не подключен нужный lib файл.
Bers
Заблокирован
30.10.2011, 22:27     error LNK1120 #3
возможно, проблема вот с этой дранью:
Цитата Сообщение от Smillles7 Посмотреть сообщение
#include "stdafx.h"
За такое нужно бить по рукам:
Цитата Сообщение от Smillles7 Посмотреть сообщение
z=+*(A,B);
Smillles7
25 / 25 / 1
Регистрация: 23.04.2011
Сообщений: 130
30.10.2011, 22:28  [ТС]     error LNK1120 #4
Все хватает) у меня косяк с перегрузкой операций)

Добавлено через 43 секунды
Bers
как правильно написать??
Bers
Заблокирован
30.10.2011, 22:34     error LNK1120 #5
Цитата Сообщение от Smillles7 Посмотреть сообщение
Все хватает) у меня косяк с перегрузкой операций)
А у меня ваш код скомпилировался, после того, как я вышвырнул вот эту дрянь:
Цитата Сообщение от Smillles7 Посмотреть сообщение
#include "stdafx.h"
Насколько он корректно отработал не вникал. Но ошибок рантайма или компиляции не было.

Цитата Сообщение от Smillles7 Посмотреть сообщение
как правильно написать??
Цитата Сообщение от Smillles7 Посмотреть сообщение
reversion& reversion::operator +()
{
cout<<"Умножение"<<endl;
Я всегда думал, что оператор+ это все таки сложение, а не умножение.
Что у вас там происходит в коде, и чего вы вообще добивались, для меня загадка.
Smillles7
25 / 25 / 1
Регистрация: 23.04.2011
Сообщений: 130
30.10.2011, 22:42  [ТС]     error LNK1120 #6
Оператор + я просто для проверки назвал плюсом, на самом деле он выводит на экран перемноженые перестановки, которые перемножает оператор *
Bers
Заблокирован
30.10.2011, 22:47     error LNK1120 #7
Вы окажете себе большую услугу, если будите давать методам нормальные говорящие имена.
Smillles7
25 / 25 / 1
Регистрация: 23.04.2011
Сообщений: 130
30.10.2011, 23:17  [ТС]     error LNK1120 #8
#include "stdafx.h" нельзя убирать, без него даже компилировать не будет) и вы так и не ответили почему прога не пашет)
aeshes
 Аватар для aeshes
437 / 200 / 13
Регистрация: 07.10.2011
Сообщений: 462
30.10.2011, 23:33     error LNK1120 #9
Smillles7, если создавать пустой проект, то без stdafx все замечательно компилируется
Что вы имели в виду под "прога не пашет"? Ваш код из первого поста у меня запустился в VS 2010 и написал слово Умножение. Поскольку совсем не ясно, что он должен делать, то сказать больше ничего конкретного не могу. Возможно, если вы приведете текст ошибки полностью, скопировав его из своей среды, то вам дадут более конкретные советы
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.10.2011, 23:38     error LNK1120
Еще ссылки по теме:

C++ Fatal error LNK1120:
Error LNK1120: неразрешенных внешних элементов: 1 C++
C++ C++ - Error LNK1120,Error LNK2019

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

Или воспользуйтесь поиском по форуму:
Bers
Заблокирован
30.10.2011, 23:38     error LNK1120 #10
Цитата Сообщение от Smillles7 Посмотреть сообщение
#include "stdafx.h" нельзя убирать, без него даже компилировать не будет)
Можно, если создавать пустой проект, без предварительно скомпилированного заголовка.

Цитата Сообщение от Smillles7 Посмотреть сообщение
и вы так и не ответили почему прога не пашет)
Потому что исходный код сконструирован неверно. Грубо говоря, она работает, но делает не то, что от неё ожидается.

Предупреждая ваш следующий вопрос: я понятия не имею, что должен делать класс, и каким образом. Я не телепат. А вы о сути задачи сообщить не потрудились.

Мне откровенно лень расшифровывать каракули человека, который дал методам непонятные имена, и не оставил ни одного комментария, ни одной зацепки, с помощью которой можно было бы догадаться, что же должен делать этот не_правильно_работающий код.

Имейте уважение к людям, которые после вас будут читать ваш код, и пытаться в нем разобраться: опишите по человечески, какую задачу решает класс. Напротив прототипов методов поставьте комментарии, которые объясняют суть метода.

Если используется замороченный алгоритм (а замороченный уже тогда считается замороченным, когда вы сами испытываете с ним сложности) - поставьте комментарий, который объяснит принцип работы данного алгоритма.

Сделайте код документируемым, что бы любой человек смог его прочитать, и однозначно понять задумку автора.

Тогда вам многие помогут на этом форуме. А так.. лично я не гадалка.
Yandex
Объявления
30.10.2011, 23:38     error LNK1120
Ответ Создать тему
Опции темы

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