Witam. mam jedną prośbę.(w związku z tym że mam samouczkę Stephena Prata). Mam cały czas
problemy(nie radze kupić z Heliona szkoła programowania C++ wydanie V) . Więc doSZEDŁem do rozdziału 9.i niejak nie mogę poradzić sobie z zasadamy kompilacji rozłącznej. np. Wpisuje najprostszy projekt który posiada 3 pliki oddzielnie nie działa.w SPACJA końcu takie przykłady co są tu(w książce) przepisałem
co do literki,i jest błąd. i to u mnie nie jest pierwszy raz. i zawsze w forum znajduje odpowiedzi i długopisem normalnie poprawiam w książce. Mam nadzieje że i tym razem koledzy pomogą. więc bardzo bym prosił o jakiś taki program składający się z 3 plików źródłowych. bez objaśnień bez niczego,aby był działający. Resztę poradzę sobie w zrozumieniu.(najlepiej po polsku).
Albo jakiś link na ten temat ze szczegółami.
Pozdrawiam i bardzo dziękuje. ;-)
0
0
no dobra. no to masz projekt, w którym są pliki:
- items (cpp i h)
- mobs (cpp i h) - korzystające z items
- main (cpp) - korzystający z items i mobs
projekt jest prosty, ale ma to, co najważniejsze: deklaracje zmiennych (z extern), funkcji i klas. Ma nawet zmienną łączoną statycznie.
items.h
#ifndef ITEMS_H
#define ITEMS_H
#include <string>
using namespace std;
//---------------------------------------------
class Item {
public:
string name;
int value;
Item(string n, int v);
void show();
};
//---------------------------------------------
const static int itemsCount = 4;
extern Item items[itemsCount];
void showItems();
#endif
items.cpp
#include "items.h"
#include <iostream>
using namespace std;
//---------------------------------------------
Item items[itemsCount] = {
Item("miecz",12),
Item("tarcza",16),
Item("diament",1000),
Item("róża",1)
};
//---------------------------------------------
Item::Item(string n, int v) {
name = n;
value = v;
}
void Item::show() {
cout << " " << name << " (" << value << ")" << endl;
}
void showItems() {
cout << "Dostępne przedmioty:" << endl;
for(int i=0; i<itemsCount; i++)
items[i].show();
};
mobs.h
#ifndef MOBS_H
#define MOBS_H
#include "items.h"
#include <vector>
//---------------------------------------------
class Mob {
public:
string name;
int level;
std::vector<int> inventory;
Mob(string n, int l);
void show();
};
//---------------------------------------------
extern Mob player;
#endif
mobs.cpp
#include "mobs.h"
#include <iostream>
using namespace std;
//---------------------------------------------
Mob player("gracz",1);
//---------------------------------------------
Mob::Mob(string n, int l) {
name = n;
level = l;
}
void Mob::show() {
cout << name << " (poziom " << level << ")" << endl;
cout << "Ekwipunek:" << endl;
for(int i=0; i<inventory.size(); i++)
items[inventory[i]].show();
}
main.cpp
#include <iostream>
#include <cstdlib>
#include "mobs.h"
#include "items.h"
using namespace std;
int main(int argc, char *argv[])
{
player.inventory.push_back(1);
player.inventory.push_back(2);
int choice = 0;
do {
cout << "----------------------" << endl
<< "0. wyjście" << endl
<< "1. informacje o graczu" << endl
<< "2. lista przedmiotów" << endl;
choice = 0;
cin >> choice;
switch(choice) {
case 1:
player.show();
break;
case 2:
showItems();
break;
default:
cout << "błąd!" << endl;
choice = 0;
};
} while(choice != 0);
system("pause");
return EXIT_SUCCESS;
}
0
Dzięki Ranides. Właśnie o to mi chodziło,tyle że nie pozwoliłem sobie za dużo prosić.
To za 2 godziny już będzie przylepiony do mojego mózgu. :-D