Witam napisałem oto program składający się z 3 plików połączony w projekt.
Celem programu jest pobieranie od użytkownika liczby punktów do utworzenia nastepnię przesuwanie punktów o podaną wartość i zliczanie ile obiektów punktów utworzono tzn. tworze sobie załóżmy 3 punkty to wypisuje mi na bieżąco ile obiektów punktów utworzono w danym momencie ( przy podaniu drugiego punktu wypisuje utworzono dwa obiekty typu punkt itd).
Poniżej podaje cały kod wraz z podziałem.
PLIK 1 : punkt.h
class punkt
{
private:
float x, y;
static int counter;
public:
punkt (float, float);
~punkt();
void przesun (float, float);
void wyswietl();
};
int punkt::counter = 0;
--------------------------------------------
PLIK 2 : definicja.cpp
#include <iostream>
#include "punkt.h"
using namespace std;
punkt::punkt (float xx, float yy)
{
x = xx; y = yy;
counter++;
}
punkt::~punkt()
{
counter--;
}
void punkt::przesun(float dx, float dy)
{
x = x + dx; y = y + dy;
}
void punkt::wyswietl()
{
cout<<"\n";
cout << "Moje Wspolrzedne: " << x << " " << y <<"ilosc utworzonych obiektow "<< punkt::counter<<"\n";
}
--------------------------------------------
PLIK 3 : main.cpp
#include <iostream>
#include "punkt.h"
using namespace std;
main ()
{
float xx,yy,dx,dy,z;
int tab[10];
cout<<"podaj ilosc utworzenia obiektow ";
cin>>z;
for(int i=1;i<z+1;i++)
{
cout << "\n";
cout<<"obiekt numer " <<i<<"\n";
cout<<"Podaj 1 wspolrzedna ";
cin>>xx;
cout<<"Podaj 2 wspolrzedna ";
cin>>yy;
punkt tab (xx, yy);
tab.wyswietl();
cout <<"\n";
cout<<"Podaj 1 wspolrzedna do przesuniecia ";
cin>>dx;
cout<<"Podaj 2 wspolrzedna do przesuniecia ";
cin>>dy;
tab.przesun(dx, dy);
tab.wyswietl();
}
cout << "\n";
cout << "\n";
cout << "\n";
system("PAUSE");
}
-----------------------------------------------
Zachodzę w głowę od dwóch dni a mianowicie program raz się kompiluje wszystko chodzi dobrze, ale załóżmy w programie zrobię sobie spację ( od tak nic nie znaczącą spacje nawet poza kodem programu ) i zaraz wywala błędy (dziwne ? ) przecież zwykłą spacją w pustym miejscu nawet poza klamrami programu nic nie zmieniam.
A o to błędy które pokazuje kompilator po naciśnięciu magicznej nic nie znaczącej spacji;
1: multiple definition of `punkt::counter'
2: first defined here
3: ld returned 1 exit status
4: C:\xxxx\Zadanie\Makefile.win [Build Error] [Zadanie.exe] Error 1
Po najechaniu na którykolwiek błąd nie podkreśla go w programie pokazując gdzie jest błąd ( po prostu nic nie robi )
Pytam w celu otrzymania pomocy ponieważ chcę żeby ten program działał za każdym razem a nie na ryzyk fizyk ( przecież c++ to nie java :p)