Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
#1

Непонятная ошибка. Несколько файлов - C++

30.08.2013, 21:17. Просмотров 551. Ответов 18
Метки нет (Все метки)

один header подключаем в другой(у которого есть .cpp файл) и возникает ошибка!

play1.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
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
 
 
struct card
{
       
       int first; 
       int second; 
       card(int f, int s) : first(f), second(s) {}
       card() : first(0), second(0) {}
       
      
       card& operator=(const card& cop)
       {
             first  = cop.first;
             second = cop.second;
        return *this;
       }
 
       bool operator==(const card& cop)
       {
             if (first == cop.first)
                 return true;
             else return false;
       }
 
       bool operator>(const card& cop)
       {
             if (first > cop.first )
                 return true;
             else return false;
       }
 
       bool operator<(const card& cop)
       {
             if (first < cop.first )
                 return true;
             else return false;
       }
      
};
 
 
bool op(const card& c1, const card& c2)
{
     if (c1.first < c2.first) return true;
     return false;
}
 
bool op2(const card& c1, const card& c2)
{
     if (c1.first == c2.first) return true;
     return false;
}
mypoker.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
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
#include <vector>
#include "play1.h"
using namespace std;
 
typedef vector<card> col_card;
 
class Desk
{
      public:
             Desk();
             
             void refresh();
             card back_card();
             
      private:
              vector<int> desk_c;
};
 
class Player
{
      public:
             Player() : points(0), money(0), inv_money(0) {}
             
             void set_points(long);
             void set_money(int);
             void set_card(card& );
             void set_inv(int);
             
             int get_inv() const { return inv_money;}
             int get_money() const {return money;}
             long get_points() const {return points;}
             card get_card(int i) {return pl_col[i];}
             
      private:
              long points;
              int money;
              col_card pl_col; 
              int inv_money;             
};
 
class Game
{
      public:
             Game(int pl) : pls(pl) {}
             
             void distrib();
             void add_card();
             long det_comb();
             void fcr();
             
             
      private:
              col_card board;
              vector<Player> pls;
              Desk collection;
};
mypoker.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
#include "mypoker.h"
#include <ctime>
#include <algorithm>
 
typedef vector<card> col_card;
 
Desk::Desk()
{
    srand(time(0));
            
            for(int i=2; i<54; i++)
                    desk_c.push_back(i);
            
            for(int j=0; j<50; j++)
                    random_shuffle(desk_c.begin(), desk_c.end());
}
 
void Desk::refresh()
{
     desk_c.clear();
     
     for(int i=2; i<54; i++)
           desk_c.push_back(i);
     
     for(int j=0; j<50; j++)
           random_shuffle(desk_c.begin(), desk_c.end());
            
}
 
card Desk::back_card()
{
     vector<int>::iterator pos;
     pos=desk_c.end()-1;
     card buf;
     if(*pos < 15) { buf=card(*pos, 1); }
     else if(*pos>14 && *pos<28) { buf=card((*pos-13), 2); }  
     else if(*pos>27 && *pos<41) { buf=card((*pos-26), 3); }
     else { buf=card((*pos-39), 4); }
     
     desk_c.erase(pos);  
     return buf;   
}
 
 
///////////////////////////////////////////////////////////////////
 
 
void Player::set_points(long p)
{
     points=p;
}
 
void Player::set_money(int m)
{
     money=m;
}
 
void Player::set_card(card& c)
{
     pl_col.push_back(c);
}
 
void Player::set_inv(int i)
{
     inv_money=i;
}
 
 
//////////////////////////////////////////////////////////////////////
 
 
void Game::distrib()
{
     for(int i=0; i<pls.size(); i++)
     {
              card c=collection.back_card();
              pls[i].set_card(c);
              c=collection.back_card();
              pls[i].set_card(c);
              
              pls[i].set_points(0);
              pls[i].set_inv(0);
     }
} 
 
void Game::add_card()
{
     board.push_back(collection.back_card());
}
 
long Game::det_comb()
{
     
}
 
void Game::fcr()
{
     
}
при компиляции mypoker.cpp возникает ошибка:

[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.08.2013, 21:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Непонятная ошибка. Несколько файлов (C++):

Непонятная ошибка
Исходник: #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int...

Непонятная ошибка
Вообщем имеется такой код: // главная программа aka programm.cpp #include...

непонятная ошибка
#include &lt;stdio.h&gt; #include &lt;math.h&gt; main() { float x,pi,s,e,q,n; ...

Непонятная ошибка
Добрый день дамы и господа эксперты. Писал я программу по практическому...

Непонятная ошибка
Нужно считать в вектор пар все числа, отличные от нуля. В паре - первое число -...

Непонятная ошибка
Не могу понять, где неправильно. У меня есть такая матрица А 1 4 2 1 3 6 ...

18
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.08.2013, 21:22 #2
А main() где и проект какой?
1
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
30.08.2013, 21:29  [ТС] #3
Цитата Сообщение от alsav22 Посмотреть сообщение
А main() где?
ыы

мда уж дожились задавать такие вопросы но все же:

все время писал все в хедере но однажды познал истину, что берем файл X.h его реализацию полностью делаем в X.cpp и подключаем X.h в Main.cpp//таким образом при внесение в реализацию изменений(в X.cpp) не нужно заново собирать проект ... так ли это?
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.08.2013, 21:39 #4
Среда какая? Кроме того, что в первом посте, ещё что-нибудь пишет? И ещё раз:
Цитата Сообщение от alsav22 Посмотреть сообщение
А main() где и проект какой?
0
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
30.08.2013, 21:45  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
И ещё раз
я собирался main реализовать например в main.cpp и к нему подкл mypoker.h

среда DevC++ перебил винду, а тк сильно хотелось закончить исходники

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
проект какой
какой еще мб проект? канечно консоль
0
fasked
30.08.2013, 21:54
  #6

Не по теме:

Цитата Сообщение от Хулиган Посмотреть сообщение
C++
1
2
3
if (first == cop.first)
    return true;
else return false;
Это примерно как написать
C++
1
2
3
if (true)
    return true;
else return false;

1
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
30.08.2013, 22:01  [ТС] #7
Цитата Сообщение от fasked Посмотреть сообщение
Это примерно как написать
почему? при сравнении используется первое поле структуры!
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.08.2013, 22:03 #8
Цитата Сообщение от Хулиган Посмотреть сообщение
я собирался main реализовать например в main.cpp
Собирались и не собрались? Без main() компилируете?
1
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
30.08.2013, 22:05  [ТС] #9
fasked, а по оформлению какие замечание? это уже не по теме

Добавлено через 1 минуту
Цитата Сообщение от alsav22 Посмотреть сообщение
Собирались и не собрались?
ну так мне нужно вначале mypoker.cpp скомпилировать что бы хедер подключить в main.cpp
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.08.2013, 22:08 #10
Цитата Сообщение от Хулиган Посмотреть сообщение
ну так мне нужно вначале mypoker.cpp скомпилировать что бы хедер подключить в main.cpp
Не знаю как в DevC++, но в студии, компиляция без main(), не пройдёт.
1
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.08.2013, 22:09 #11
Цитата Сообщение от Хулиган Посмотреть сообщение
а по оформлению какие замечание?
Этого будет достаточно:
C++
1
return first == cop.first;
1
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.08.2013, 22:13 #12
Цитата Сообщение от Хулиган Посмотреть сообщение
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
main() не находит, вот и пишет...
1
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
30.08.2013, 22:17  [ТС] #13
Цитата Сообщение от fasked Посмотреть сообщение
return first == cop.first;
изначально так и было, но ктот из умных товарищей форума реализовал так, а я глупости юношеской скопировал(

Добавлено через 3 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
main() не находит, вот и пишет...
хорошо
есть 4 файла

play.h
mypoker.h(#include "play.h")
mypoker.cpp
main.cpp

напишите порядок сборки, что и как собирать!
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.08.2013, 22:19 #14
Цитата Сообщение от Хулиган Посмотреть сообщение
напишите порядок сборки, что и как собирать!
Код
g++ mypoker.cpp main.cpp -opoker
1
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
30.08.2013, 22:19 #15
Цитата Сообщение от Хулиган Посмотреть сообщение
напишите порядок сборки,
В ручную что-ли? Что за вопросы? В проект добавьте файлы и пусть компилятор собирает. Что не так будет - напишет.
1
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
30.08.2013, 22:22  [ТС] #16
Цитата Сообщение от fasked Посмотреть сообщение
g++ mypoker.cpp main.cpp -opoker
а допустим потребовалось изменить реализацию какой то функции в mypoker.cpp каковы мои действия? делаю изменения в коде, а дальше?
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
30.08.2013, 22:43 #17
Цитата Сообщение от Хулиган Посмотреть сообщение
а допустим потребовалось изменить реализацию какой то функции в mypoker.cpp каковы мои действия? делаю изменения в коде, а дальше?
Таким же образом. Либо, если есть желание компилировать все раздельно, то таким образом:
Код
g++ -c poker.cpp
g++ -c main.cpp
На выходе будут объектные файлы с соответствующими именами poker.o и main.o. Теперь, чтобы получить исполняемый файл:
Код
g++ poker.o main.o -opoker
Если изменился файл poker.cpp, то надо пересобрать poker.o:
Код
g++ -c poker.cpp
Ну и еще раз собрать исполняемый файл с помощью уже знакомой команды:
Код
g++ poker.o main.o -opoker
1
Хулиган
85 / 80 / 21
Регистрация: 08.08.2012
Сообщений: 737
30.08.2013, 22:52  [ТС] #18
fasked, воо..вот это другое дело спасибо! а ккак же обойтись без полной пересборки?
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
31.08.2013, 09:04 #19
Цитата Сообщение от Хулиган Посмотреть сообщение
а ккак же обойтись без полной пересборки?
А здесь и нет полной пересборки, вы разве видите где-нибудь в последнем примере, чтобы заново собирался main.cpp? Только один раз.
1
31.08.2013, 09:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2013, 09:04
Привет! Вот еще темы с решениями:

Непонятная ошибка
Мне дана матрица коэффициентов системы линейных уравнений в необычном виде:...

непонятная ошибка
Люди срочно на помощь, в чем касяк // Экзам.cpp: определяет точку входа для...

Непонятная ошибка
Задание:С помощью табуляции сделать прогу,которая выводит таблицу.Надо ,чтоб...

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


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

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

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