Magiczny kompilator dev c++ Problem

0

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)

1

proponował bym przejść na jakieś przewidywalne środowisko, np również darmowy code blocks. Dev od dawna nie jest rozwijany i zabugowany czyli w zasadzie nieprzewidywalny jako taki.

0

Jak chcesz żeby działał za każdym razem, to napisz go w javie.

0

potrzebny jest działający w c++ najlepiej w dev.

0
marcinex1990 napisał(a)

potrzebny jest działający w c++ najlepiej w dev.

Wspomniany przeze mnie code blocks jak najbardziej obsługuje c++ (starczy otworzyć w nim plik z kodem i już można kompilować na nowo), masa innych zdatnych do użytku środowisk programistycznych również.

3

int punkt::counter = 0;
wrzuć to do pliku cpp, a nie do .h

0

Nie prawda. Bardzo długo programowałem w DEVie i nie miałem z nim nigdy problemów.

Jeśli jestes studentem i wasza uczelnia ma umowe z Microsoftem o MSDN to pobierz sobie Microsoft Visual Studio 2010 ;] i tam nie będziesz miał żadnych problemów bo to istny kombajn xd chyba najlepszy projekt Microsoftu xd

Drugą sprawą jest standard C++ i niektóre nie standaryzowane instrukcje, polecenia i tricki programistyczne a to juz na różnych kompilatorach traktowane jest różnie. W jednym to jakoś przełknie a w innym wywali błąd xd

0

dzięki wielkie krwq wszystko wyjaśnił. Pozdrawiam :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1