ПрограммированиеФорумОбщее

C++ хедеры (2 стр)

Страницы: 1 2 3 Следующая »
#15
14:06, 10 янв 2011

Zakus
> Сделать харакири.

лучше сеппуку :)

#16
14:10, 10 янв 2011

Emporio_1
молодец. а теперь скажи ошибки.
в принципе сходу видно, что нужно enum'ы перенести в хедер, где они используются

#17
14:15, 10 янв 2011

2 C:\папка\программы C++\Maltiplayer.h `string' does not name a type
и так прямиком до 6 строчки.
7 C:\папка\программы C++\Maltiplayer.cpp multiple definition of `enum gun'
5 C:\папка\программы C++\Maltiplayer.h previous definition here
7 C:\папка\программы C++\Maltiplayer.cpp conflicting declaration 'mf'
5 C:\папка\программы C++\Maltiplayer.h 'mf' has a previous declaration as `gun mf'
7 C:\папка\программы C++\Maltiplayer.cpp declaration of `mf'
5 C:\папка\программы C++\Maltiplayer.h conflicts with previous declaration `gun mf'
7 C:\папка\программы C++\Maltiplayer.cpp conflicting declaration 'deagle'
5 C:\папка\программы C++\Maltiplayer.h 'deagle' has a previous declaration as `gun deagle'
ну и дальше короче ошибка на ошибке, но до того как перенес все стабильно работало.

#18
14:21, 10 янв 2011

Emporio_1

Молодец,... определение класса в *.h перенес, а включения заголовков, определение перечислений, включение пространства имен - оставил в *.cpp. Плюс, в *.h нет директвы от повторного включения (что обязательно выйдет боком, при включении в 2 и более *.cpp).

#19
14:21, 10 янв 2011

Emporio_1
> `string' does not name a type
Ну дах оно в неймспейсе std, что хотел?

#20
14:24, 10 янв 2011

Emporio_1

#include <iostream>
#include <algorithm>
#include <string>
#include <conio.h>

загоняешь в h, из cpp удаляешь, оставляешь там только #include "Maltiplayer.h"

Но главное - читаешь книжки.

#21
14:30, 10 янв 2011

Сделал но не работает.
еще пишет что в функции инт мэйн:
15 C:\папка\программы C++\multiplayer.cpp 'class player' has no member named 'get_gun'
Теперь сделал так:

cpp файл:
//#include <iostream>
//#include <algorithm>
//#include <string>
#include <conio.h>
#include "Maltiplayer.h"
// #include "Maltiplayer.cpp"
using namespace std;
string guns[]={"m4","deagle","9mm"};
string healths[]={"low","med","good"};
string protects[]={"low","med","good","well"};

int main() {
    player p;
    p.set_gun(mf);
    p.get_gun();
    getch();
}

.h

#include <iostream>
#include <algorithm>
#include <string>
#include <conio.h>
//#include "multiplayer.cpp
class player {
      public:
             void set_gun(gun g) {g_=g;}
             void set_health(health h) {h_=h;}
             void set_protect(protect p) {p_=p;}
             string get_gun() {return guns[g_];}
             string get_health() {return healths[h_];}
             string get_protect() {return protects[p_];}
      private:
              gun g_;
              health h_;
              protect p_;
              };

опять я чего-то недопонял...

#22
14:41, 10 янв 2011

где enum-ы?
разве не std::string должно быть вместо string?

и ети вот:

string guns[]={"m4","deagle","9mm"};
string healths[]={"low","med","good"};
string protects[]={"low","med","good","well"};

тоже надо в h

#23
14:44, 10 янв 2011

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

#24
14:47, 10 янв 2011

Emporio_1
Старайся не забегать вперёд того, что ты изучил в книге. Я понимаю, что тебе хочется как можно скорее сделать то, что ты хочешь, но без нужных знаний ты больше времени потратишь. Лучше читай книжку последовательно и не забегай вперёд, быстрее изучишь и быстрее напишешь то, что хочешь.

#25
14:49, 10 янв 2011

cranky
> все очень даже понятно, ты элементарно не знаешь ничего. учебник надо изучать
> последовательно с первой страницы, а не с середины по диагонали, знания
> самотеком в сознание не поступают.
+1

Emporio_1
Читай внимательно книжки, думай, сравнивай по буквенно:

multiplayer.h

#include <string>

enum gun{mf,deagle,nm};
enum protect{low_p,med_p,extra};
enum health{low,med,good,well};

extern const std::string guns[], healths[];

class player {
public:
  void set_gun(gun g) {g_=g;}
  void set_health(health h) {h_=h;}
  void set_protect(protect p) {p_=p;}
  const std::string get_gun() const {return guns[g_];}
  const std::string get_health() const {return healths[h_];}
  
  const std::string get_protect() const; // А тут сделаем немножко по-другому для разнообразия
private:
  gun g_;
  health h_;
  protect p_;
};

multiplayer.cpp

#include <string>
#include "multiplayer.h"

using namespace std;
const string guns[]={"m4","deagle","9mm"};
const string healths[]={"low","med","good"};
const string protects[]={"low","med","good","well"};

const string player::get_protect() const {
  return protects[p_];
}

main.cpp

#include <iostream>
#include "multiplayer.h"

using namespace std;

int main() {
    player p;
    p.set_gun(mf);
    cout << p.get_gun() << "\n";
    
  char tmp;
  cin >> tmp;
}
#26
15:45, 10 янв 2011

HolyDel
> и ети вот:
>
> string guns[]={"m4","deagle","9mm"};
> string healths[]={"low","med","good"};
> string protects[]={"low","med","good","well"};
> тоже надо в h
они должны быть в срр, в h надо extern прописывать...

#27
15:59, 10 янв 2011

2Emporio_1
Рекомендую сэкономить тучу времени:
http://valera.asf.ru/cpp/book/index.html (полностью)
+ Стефенс, Диггинс, Турканис, Когсуэлл "С++. Сборник рецептов" (по интересующим вопросам).

#28
17:22, 10 янв 2011

cranky
> все очень даже понятно, ты элементарно не знаешь ничего. учебник надо изучать
> последовательно с первой страницы, а не с середины по диагонали, знания
> самотеком в сознание не поступают.
А я его и изучал с первой страницы. Я темы несколько раз прохожу

#29
17:38, 10 янв 2011

В книгах такое не пишут, обычно идет только описание языка.
Лучше посмотри легкие примеры, в том же hge, открой проект \src\helpers\hgehelp.vcproj

Страницы: 1 2 3 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.