Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 48

Ошибка LNK2005

08.05.2018, 14:38. Показов 1861. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть игра крестики-нолики. Получил задание вынести несколько структур в другие файлы. Попытался вынести структуру игроков (имя первого, имя второго, количество побед у крестиков, количество побед у ноликов). Делал по примеру с интернета. Вынес структуру игроков в .h, в .cpp реализовал функцию ввода имён, а в main.cpp в main прописал эту функцию.
Но выбивает ошибку при компиляции. Помогите, пожалуйста, исправить


Ошибка LNK2005 "struct gamer igrok" (?igrok@@3Ugamer@@A) уже определен в myplayer.obj krestikinolikikurs B:\krestikinolikikurs\krestikinolikikurs \krestikinolikikurs.obj 1

Ошибка LNK2005 "class std::vector<struct gamer,class std::allocator<struct gamer> > Data" (?Data@@3V?$vector@Ugamer@@V?$allocator@ Ugamer@@@std@@@std@@A) уже определен в myplayer.obj krestikinolikikurs B:\krestikinolikikurs\krestikinolikikurs \krestikinolikikurs.obj 1

Ошибка LNK1169 обнаружен многократно определенный символ - один или более krestikinolikikurs B:\krestikinolikikurs\Debug\krestikinoli kikurs.exe 1


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
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include "myplayer.h"
 
using namespace std;
 
int hod = 1;
char board[9] = {};              //Чтобы отобразить ход(ввод)пользователя на доске. Доска будит состоять из 9-и однобуквенных стрингов char
 
void clearscreen()               // очищает окно консоли, функция clearscreen ни чего не возвращает.
{
    for (int i = 0; i<100; i++)  //цикл отсчитывает от 0 до 100 и при каждом повторении цикла выводит на экран cout<<endl; новую строчку
    {
        cout << endl;
    }
}
void clearboard()            //эта функция очищает доску и ни чего не возвращает
{
    for (int i = 0; i<9; i++) //цикл который проходит по всем 9-и ячейкам на доске. board[i] поставит туда  пустышку = '-‘. Это возвращает доску в своё изначальное состояние.
    {
        board[i] = '-';
    }
 
}
bool has_wonQ(char player)        //функция bool has_wonQ(char player) проверяет когда игра закончилась. возвращает bool
{
    int wins[][3] = { { 0,1,2 },{ 3,4,5 },{ 6,7,8 },{ 0,3,6 },{ 1,4,7 },//двухмерный массив wins[8][3](8 по 3) в котором перечисляются все выигрышные варианты
    { 2,5,8 },{ 0,4,8 },{ 2,4,6 }
    };
    //Этими циклами проверяется если у одного из игроков есть фишки на всех трёх местах из какой-нибудь из тройки. т.к. переменные отсчитываются с 0(ноля) тогда эквивалент клеток 1, 2, 3  в окне консоли в коде {0,1,2}.
    // цикл  for(int i = 0; i<8; i++)проверяет массив[8], а цикл  for(int j = 0; j<3; j++) проверяет массив [3]
    for (int i = 0; i<8; i++)
    {
        int count = 0;
        for (int j = 0; j<3; j++)
        {
            if (board[wins[i][j]] == player)//если(на boardдоске на квадратике который задан в массиве[wins]по элементу[i] и [j] будит ровняться  player (проверяемого X или О (char player))
                count++;//Если на этом месте  в массиве доска стоит X то увеличивается count на единицу ++.
        }
        if (count == 3) //если(счётчик  ровняется 3) т.е. к примеру проходится троечка {0,1,2} и все три ровняются крестику(Х) или нолику(О) то возвращается return
        {
            return true;
        }
    }
    return false;
}
 
void print_board(string indent) //функция void print_board(){ … } которая будит выводить  доску на экран
{
    cout << "Игровая доска\n";        //Выводится на экран заголовок
    cout << indent << "-" << board[6] << "-|-" << board[7] << "-|-" << board[8] << "- \n";
    cout << indent << "-" << board[3] << "-|-" << board[4] << "-|-" << board[5] << "- \n";
    cout << indent << "-" << board[0] << "-|-" << board[1] << "-|-" << board[2] << "- \n";//Заменяется переменная стринг (-) на переменную board[] с номером клетки, т.к.  переменные начинаются с нуля, то  вместо 1 пишется 0, вместо 2 пишется 1 и т.д.
}
 
 
int get_move() // Создаётся функция “get_move()“(Получить ввод пользователя)
{
    cout << "\nНомера клеточек: \n";
    cout << "-7-|-8-|-9-" << endl;
    cout << "-4-|-5-|-6-" << endl;
    cout << "-1-|-2-|-3-" << endl;
    cout << "\n";
    print_board("");
    if (hod % 2 == 1)
    {
        cout << "\n" << igrok.name1 << ", в какую клеточку ставим? : ";
    }
    else
    {
        cout << "\n" << igrok.name2 << ", в какую клеточку ставим? : ";
    }
    hod++;
    int move;// Что бы получить вход пользователя создаётся переменная move
    cin >> move;//Просим что бы пользователь ввёл эту переменную (число)
    while (move > 9 || move < 1 || board[move - 1] != '-') //Цикл  while  проверяет вход  который дал пользователь больше 9  (move > 9) или отрицательное
    {
        cout << "Вы ввели неверный номер клеточки (введите от 1 до 9) или эта клеточка уже занята:\n";
        cin >> move;
    }
    return move;//Возвращаем значение move
}
 char play_and_get_winner() //функция play_and_get_winner() она будит возвращать char(символ) т.е. сыграть в игру и получить выигравшего
{
    int turn = 1;//переменная turn(ход) изначально будeт первой ход и ровняться= 1
 
    while (!has_wonQ('X') && !has_wonQ('0')) //пока не выиграл пользовательhas_wonQ за Х и  не выиграл пользовательhas_wonQ за О
    {
        clearscreen();
        int move = get_move();//Вызывается функция get_move()и помещается то что она вернет в переменную
 
        clearscreen();
        if (turn % 2 == 1) //проверка на чётный ход,
        {
            board[move - 1] = 'X';//то тогда задаётся значение   ='X'
            if (has_wonQ('X')) //если пользователь играющий за 'X выиграл
            {
                cout << "Победил " << igrok.name1 << " (X)\n";
                return 'X'; // возвращает победу пользователя Х
            }
 
        }
        else     // Все остальные ходы будут нечётные,
        {
            board[move - 1] = '0';
            if (has_wonQ('0'))
            {
                cout << "Победил " << igrok.name2 << " (Y)\n";
                return '0';
            }
        }
        turn++;
        if (turn == 10) //если(turn=10), то ничья. T.е. ставить крестик или нолик некуда
        {
            cout << "Ничья\n";
            return 'D';
        }
    }
}
int main()
{
    setlocale(LC_CTYPE, "Russian");
    gamer igrok;
    /*cout << "Добро пожаловать в Крестики-нолики\n\n";
    cout << "Как называть игрока 1 (за Х): ";
    getline(cin, igrok.name1);
    cout << "Как называть игрока 2 (за O): ";
    getline(cin, igrok.name2);*/
    AddName(Data);
    string reply = "y";//декларируется стринг ответа. изначально "y"(ДА)
    igrok.x_wins = 0;
    igrok.o_wins = 0;
        int ties = 0;//перечень переменных типаint  x_wins=0(это количество раз когда пользователь играющий иксами выиграл), o_wins=0(играющий О), ties=0(ничьи)
    while (reply == "y")
    {
        clearboard();
        char winner = play_and_get_winner();// char winner ровняется= play_and_get_winner()
        print_board("\t  ");
        switch (winner)
        {
        case 'X':
            igrok.x_wins++;
            break;
        case '0':
            igrok.o_wins++;
            break;
        case 'D':
            ties++;
            break;
        }
        cout << "\n\t*Статистика победителей*\nИгрок X (" << igrok.name1 << "): " << igrok.x_wins
            << ", Игрок O (" << igrok.name2 << "): " << igrok.o_wins << " и ничьих: " << ties << "\n\n";
        cout << "\n Желаете ли вы сыграть ещё? (y/n): ";
        cin >> reply;
        while (reply != "y" && reply != "n")
        {
            cout << "Вы ввели не правильный ответ. Введите 'y', если хотите сыграть ещё раз, либо 'n' если желаете выийти из игры:";
            cin >> reply;
        }
    }
    system("pause");
    return 0;
}

myplayer.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//#pragma once
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include "myplayer.h"
 
void AddName(GamerVector& Data)
{
    GamerVector Datal;
    gamer igrok;
    cout << "Как называть игрока 1 (за Х): ";
    getline(cin, igrok.name1);
    cout << "Как называть игрока 2 (за O): ";
    getline(cin, igrok.name2);
    Data.push_back(igrok);
    //return Data;
}

myplayer.h
Кликните здесь для просмотра всего текста
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
#pragma once
#ifndef MYPLAYER_H
#define MYPLAYER_H
 
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
struct gamer
{
    string name1;
    string name2;
    int x_wins;
    int o_wins;
};
gamer igrok;
 
typedef vector<gamer> GamerVector;
 
void AddName(GamerVector&);
 
GamerVector Data;
#endif//MYPLAYER_H
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.05.2018, 14:38
Ответы с готовыми решениями:

Ошибка LNK2005
Всем привет. Реализовал я значит некий алгоритм шифрования. И он работает. Но есть проблемка. Если создаю Си проект, то все работает на...

Ошибка LNK2005
Создал небольшой проект, чтобы разобраться в работе с C++. При компиляции выдает такую ошибку: Вот код проекта: Core.h ...

ошибка error LNK2005
В проекте структура и bool сравнение двух экземпляров . Выдает эту ошибку и fatal error LNK1169... struct Point3D { double x,y,z; ...

14
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
08.05.2018, 14:48
Не нужно определения в заголовочных файлах делать. Лучше избавиться от глобальных переменных. Если оставить, то в заголовочных файлах объявить с extern, определения (без extern) сделать в .cpp.
0
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 48
08.05.2018, 19:48  [ТС]
nd2, можете про заголовочные файлы подробнее объяснить, пожалуйста? Что надо убрать из кода?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.05.2018, 02:38
Для начала, убрать gamer igrok; и GamerVector Data; из .h файла.
Можешь их объявить глобально в файле, где main(), но лучше - в самой main().
0
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 48
09.05.2018, 12:22  [ТС]
nd2, убрал. В main.cpp вверху поставил gamer igrok;, а в самом main() прописал GamerVector Data;.
gamer igrok прописал вверху, т.к. он не только в main используется, но и в функциях выше. И если поставить в main, то компилятор ругается на не известные "igrok".

Но тем проблема такая, что имена запрашивает у игроков, но когда должно писать текст "*имя*, в какую клеточку ставим?" не отображает имя. В итоге выходит такой текст " , в какую клеточку ставим?".

Я так понял, проблема в том, что введённые имена в myplayer.cpp надо как-то передать в главный файл? Можете, пожалуйста, сказать что не так?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.05.2018, 12:29
Цитата Сообщение от Ellusion Посмотреть сообщение
но и в функциях выше.
Не вижу, чтобы он там использовался, вижу, что там локальный igrok создаётся.
Что мешает создавать его в main(), а в другие функции передавать по ссылке?
0
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 48
09.05.2018, 21:13  [ТС]
nd2, а разница сильно большая, если объявить в начале программы или в самом main'e ?

Добавлено через 8 часов 33 минуты
Подскажите, кто-нибудь, пожалуйста, в моём файле myplayer.cpp есть код, который запрашивает у пользователя два имени. И, по сути, должно передавать в основной main.cpp. Но в итоге: имена запрашивает, но потом в месте, где эти имена должны отображаться, просто пустое место. В чём проблема?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.05.2018, 21:18
Цитата Сообщение от Ellusion Посмотреть сообщение
И, по сути, должно передавать в основной main.cpp.
Каким образом?
Цитата Сообщение от Ellusion Посмотреть сообщение
но потом в месте, где эти имена должны отображаться
И как выглядит это место? Ellusion, если код изменил, то нужно выложить изменённый код, иначе, о чём говорить?
0
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 48
09.05.2018, 21:58  [ТС]
nd2, выше написал, что убрал то, что вы сказали и main.cpp вписал.
gamer igrok; - в начало

GamerVector Data; - в main()
Всё. Больше ничего не трогал
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.05.2018, 22:15
Цитата Сообщение от Ellusion Посмотреть сообщение
выше написал, что убрал то, что вы сказали и main.cpp вписал.
gamer igrok; - в начало
GamerVector Data; - в main()
Всё. Больше ничего не трогал
Это ни о чём. Код нужно видеть, а не рассказы о нём читать.
0
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 48
09.05.2018, 22:36  [ТС]
nd2,

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
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
#include "stdafx.h"
#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include "myplayer.h"
 
using namespace std;
gamer igrok;
int hod = 1;
char board[9] = {};              //Чтобы отобразить ход(ввод)пользователя на доске. Доска будит состоять из 9-и однобуквенных стрингов char
 
void clearscreen()               // очищает окно консоли, функция clearscreen ни чего не возвращает.
{
    for (int i = 0; i<100; i++)  //цикл отсчитывает от 0 до 100 и при каждом повторении цикла выводит на экран cout<<endl; новую строчку
    {
        cout << endl;
    }
}
void clearboard()            //эта функция очищает доску и ни чего не возвращает
{
    for (int i = 0; i<9; i++) //цикл который проходит по всем 9-и ячейкам на доске. board[i] поставит туда  пустышку = '-‘. Это возвращает доску в своё изначальное состояние.
    {
        board[i] = '-';
    }
 
}
bool has_wonQ(char player)        //функция bool has_wonQ(char player) проверяет когда игра закончилась. возвращает bool
{
    int wins[][3] = { { 0,1,2 },{ 3,4,5 },{ 6,7,8 },{ 0,3,6 },{ 1,4,7 },//двухмерный массив wins[8][3](8 по 3) в котором перечисляются все выигрышные варианты
    { 2,5,8 },{ 0,4,8 },{ 2,4,6 }
    };
    //Этими циклами проверяется если у одного из игроков есть фишки на всех трёх местах из какой-нибудь из тройки. т.к. переменные отсчитываются с 0(ноля) тогда эквивалент клеток 1, 2, 3  в окне консоли в коде {0,1,2}.
    // цикл  for(int i = 0; i<8; i++)проверяет массив[8], а цикл  for(int j = 0; j<3; j++) проверяет массив [3]
    for (int i = 0; i<8; i++)
    {
        int count = 0;
        for (int j = 0; j<3; j++)
        {
            if (board[wins[i][j]] == player)//если(на boardдоске на квадратике который задан в массиве[wins]по элементу[i] и [j] будит ровняться  player (проверяемого X или О (char player))
                count++;//Если на этом месте  в массиве доска стоит X то увеличивается count на единицу ++.
        }
        if (count == 3) //если(счётчик  ровняется 3) т.е. к примеру проходится троечка {0,1,2} и все три ровняются крестику(Х) или нолику(О) то возвращается return
        {
            return true;
        }
    }
    return false;
}
 
void print_board(string indent) //функция void print_board(){ … } которая будит выводить  доску на экран
{
    cout << "Игровая доска\n";        //Выводится на экран заголовок
    cout << indent << "-" << board[6] << "-|-" << board[7] << "-|-" << board[8] << "- \n";
    cout << indent << "-" << board[3] << "-|-" << board[4] << "-|-" << board[5] << "- \n";
    cout << indent << "-" << board[0] << "-|-" << board[1] << "-|-" << board[2] << "- \n";//Заменяется переменная стринг (-) на переменную board[] с номером клетки, т.к.  переменные начинаются с нуля, то  вместо 1 пишется 0, вместо 2 пишется 1 и т.д.
}
 
 
int get_move() // Создаётся функция “get_move()“(Получить ввод пользователя)
{
    cout << "\nНомера клеточек: \n";
    cout << "-7-|-8-|-9-" << endl;
    cout << "-4-|-5-|-6-" << endl;
    cout << "-1-|-2-|-3-" << endl;
    cout << "\n";
    print_board("");
    if (hod % 2 == 1)
    {
        cout << "\n" << igrok.name1 << ", в какую клеточку ставим? : ";
    }
    else
    {
        cout << "\n" << igrok.name2 << ", в какую клеточку ставим? : ";
    }
    hod++;
    int move;// Что бы получить вход пользователя создаётся переменная move
    cin >> move;//Просим что бы пользователь ввёл эту переменную (число)
    while (move > 9 || move < 1 || board[move - 1] != '-') //Цикл  while  проверяет вход  который дал пользователь больше 9  (move > 9) или отрицательное
    {
        cout << "Вы ввели неверный номер клеточки (введите от 1 до 9) или эта клеточка уже занята:\n";
        cin >> move;
    }
    return move;//Возвращаем значение move
}
 char play_and_get_winner() //функция play_and_get_winner() она будит возвращать char(символ) т.е. сыграть в игру и получить выигравшего
{
    int turn = 1;//переменная turn(ход) изначально будeт первой ход и ровняться= 1
 
    while (!has_wonQ('X') && !has_wonQ('0')) //пока не выиграл пользовательhas_wonQ за Х и  не выиграл пользовательhas_wonQ за О
    {
        clearscreen();
        int move = get_move();//Вызывается функция get_move()и помещается то что она вернет в переменную
 
        clearscreen();
        if (turn % 2 == 1) //проверка на чётный ход,
        {
            board[move - 1] = 'X';//то тогда задаётся значение   ='X'
            if (has_wonQ('X')) //если пользователь играющий за 'X выиграл
            {
                cout << "Победил " << igrok.name1 << " (X)\n";
                return 'X'; // возвращает победу пользователя Х
            }
 
        }
        else     // Все остальные ходы будут нечётные,
        {
            board[move - 1] = '0';
            if (has_wonQ('0'))
            {
                cout << "Победил " << igrok.name2 << " (Y)\n";
                return '0';
            }
        }
        turn++;
        if (turn == 10) //если(turn=10), то ничья. T.е. ставить крестик или нолик некуда
        {
            cout << "Ничья\n";
            return 'D';
        }
    }
}
int main()
{
    setlocale(LC_CTYPE, "Russian");
    //gamer igrok;
    GamerVector Data;
    /*cout << "Добро пожаловать в Крестики-нолики\n\n";
    cout << "Как называть игрока 1 (за Х): ";
    getline(cin, igrok.name1);
    cout << "Как называть игрока 2 (за O): ";
    getline(cin, igrok.name2);*/
    AddName(Data);
    string reply = "y";//декларируется стринг ответа. изначально "y"(ДА)
    igrok.x_wins = 0;
    igrok.o_wins = 0;
        int ties = 0;//перечень переменных типаint  x_wins=0(это количество раз когда пользователь играющий иксами выиграл), o_wins=0(играющий О), ties=0(ничьи)
    while (reply == "y")
    {
        clearboard();
        char winner = play_and_get_winner();// char winner ровняется= play_and_get_winner()
        print_board("\t  ");
        switch (winner)
        {
        case 'X':
            igrok.x_wins++;
            break;
        case '0':
            igrok.o_wins++;
            break;
        case 'D':
            ties++;
            break;
        }
        cout << "\n\t*Статистика победителей*\nИгрок X (" << igrok.name1 << "): " << igrok.x_wins
            << ", Игрок O (" << igrok.name2 << "): " << igrok.o_wins << " и ничьих: " << ties << "\n\n";
        cout << "\n Желаете ли вы сыграть ещё? (y/n): ";
        cin >> reply;
        while (reply != "y" && reply != "n")
        {
            cout << "Вы ввели не правильный ответ. Введите 'y', если хотите сыграть ещё раз, либо 'n' если желаете выийти из игры:";
            cin >> reply;
        }
    }
    system("pause");
    return 0;
}


myplayer.h
Кликните здесь для просмотра всего текста

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
#pragma once
#ifndef myplayer_h
#define myplayer_h
 
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
 
using namespace std;
 
struct gamer
{
    string name1;
    string name2;
    int x_wins;
    int o_wins;
};
//gamer igrok;
 
typedef vector<gamer> GamerVector;
 
void AddName(GamerVector&);
 
//GamerVector Data;
#endif//MYPLAYER_H


myplayer.cpp
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//#pragma once
#include "stdafx.h"
#include <iostream>
#include <string>
#include <vector>
#include "myplayer.h"
 
void AddName(GamerVector& Data)
{
    GamerVector Datal;
    gamer igrok;
    cout << "Как называть игрока 1 (за Х): ";
    getline(cin, igrok.name1);
    cout << "Как называть игрока 2 (за O): ";
    getline(cin, igrok.name2);
    Data.push_back(igrok);
    //return Data;
}
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.05.2018, 22:44
Цитата Сообщение от Ellusion Посмотреть сообщение
C++
1
AddName(Data);
Это, в main() зачем сделано? Где потом Data используется?
0
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 48
09.05.2018, 22:47  [ТС]
nd2, я так понял, это вызывает функцию из myplayer.cpp, в которой реализован запрос ввода имени у пользователя?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
09.05.2018, 22:48
Цитата Сообщение от Ellusion Посмотреть сообщение
я так понял, это вызывает функцию из myplayer.cpp, в которой реализован запрос ввода имени у пользователя?
И что?
Цитата Сообщение от nd2 Посмотреть сообщение
Где потом Data используется?
0
0 / 0 / 0
Регистрация: 06.11.2016
Сообщений: 48
09.05.2018, 23:03  [ТС]
nd2, надо это data потом куда-то ещё добавить?

Добавлено через 8 минут
nd2, можете объяснить что не так? Как мне использовать Data? Как сделать, чтобы введённые имена отображались?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2018, 23:03
Помогаю со студенческими работами здесь

Ошибка LNK2005 в многофайловом проекте
Появилась такая проблема ,выдает ошибку LNK2005 при компиляции программы,вроде сделано все правильно прототипы в .h,а реализация в .cpp ,...

Ошибка LNK2005: многократное определение
Написала вот такой код в VS 2013: /* файл table.h */ #define _CRT_SECURE_NO_WARNINGS #ifndef STRUCT_H #define STRUCT_H ...

Сборка многофайлового приложения: ошибка LNK2005
Привет! Помогите пожалуйста разобраться со организацией исходников. Структура такова: ColorButton.h в нем подключается Object.h и...

Ошибка 19 error LNK2005. Многофайловое приложение
У меня возникает ошибка Ошибка 19 error LNK2005: &quot;void __cdecl set_0(double *,int)&quot; (?set_0@@YAXPANH@Z) уже определен в...

Ошибка "Объект уже определен" (LNK2005)
если в ставить этот код в h файл то пишет ошибку не знаю уже как решить её не где нету enum Tabs с таким же названием enum Tabs { ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru