Zakus
> Сделать харакири.
лучше сеппуку :)
Emporio_1
молодец. а теперь скажи ошибки.
в принципе сходу видно, что нужно enum'ы перенести в хедер, где они используются
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'
ну и дальше короче ошибка на ошибке, но до того как перенес все стабильно работало.
Emporio_1
Молодец,... определение класса в *.h перенес, а включения заголовков, определение перечислений, включение пространства имен - оставил в *.cpp. Плюс, в *.h нет директвы от повторного включения (что обязательно выйдет боком, при включении в 2 и более *.cpp).
Emporio_1
> `string' does not name a type
Ну дах оно в неймспейсе std, что хотел?
Emporio_1
#include <iostream>
#include <algorithm>
#include <string>
#include <conio.h>
загоняешь в h, из cpp удаляешь, оставляешь там только #include "Maltiplayer.h"
Но главное - читаешь книжки.
Сделал но не работает.
еще пишет что в функции инт мэйн:
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_; };
опять я чего-то недопонял...
где enum-ы?
разве не std::string должно быть вместо string?
и ети вот:
string guns[]={"m4","deagle","9mm"};
string healths[]={"low","med","good"};
string protects[]={"low","med","good","well"};тоже надо в h
Emporio_1
все очень даже понятно, ты элементарно не знаешь ничего. учебник надо изучать последовательно с первой страницы, а не с середины по диагонали, знания самотеком в сознание не поступают.
Emporio_1
Старайся не забегать вперёд того, что ты изучил в книге. Я понимаю, что тебе хочется как можно скорее сделать то, что ты хочешь, но без нужных знаний ты больше времени потратишь. Лучше читай книжку последовательно и не забегай вперёд, быстрее изучишь и быстрее напишешь то, что хочешь.
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; }
HolyDel
> и ети вот:
>
> string guns[]={"m4","deagle","9mm"};
> string healths[]={"low","med","good"};
> string protects[]={"low","med","good","well"};
> тоже надо в h
они должны быть в срр, в h надо extern прописывать...
2Emporio_1
Рекомендую сэкономить тучу времени:
http://valera.asf.ru/cpp/book/index.html (полностью)
+ Стефенс, Диггинс, Турканис, Когсуэлл "С++. Сборник рецептов" (по интересующим вопросам).
cranky
> все очень даже понятно, ты элементарно не знаешь ничего. учебник надо изучать
> последовательно с первой страницы, а не с середины по диагонали, знания
> самотеком в сознание не поступают.
А я его и изучал с первой страницы. Я темы несколько раз прохожу
В книгах такое не пишут, обычно идет только описание языка.
Лучше посмотри легкие примеры, в том же hge, открой проект \src\helpers\hgehelp.vcproj
Тема в архиве.