[ ID411 @ 08.11.2009. 12:59 ] @
Hitno mi je potrebna pomoc. Radim jedan program koji kada razdvojim ne radi, tj. kada kompajliram u main dijelu ne pronalazi .h dio i ne prevodi program.

projekat.cpp
#include<iostream>
#include <stdlib.h>
#include <pravougaonik.h>
using namespace std;


main(){
Pravougaonik P;
....


pravougaonik.cpp
#include<iostream>
#include <pravougaonik.h>
using namespace std;

funkcije
...

pravougaonik.h
#ifndef PRAVOUGAONIK_H
#define PRAVOUGAONIK_H

class Pravougaonik{
....


kada pokusam kompajlirati javlja:
pravougaonik.h: No such file or directory.
`Pravougaonik' undeclared (first use this function)
[ Mihajlo Cvetanović @ 08.11.2009. 13:35 ] @
Da li je projekat.cpp u istom folderu u kome je i pravougaonik.h? Da li je pravougaonik.cpp u istom folderu u kome je i pravougaonik.h? Šta se desi ako ukineš #ifndef i #define u pravougaonik.h? Da li se pravougaonik.h zaista zove tako (možda imaš štamparsku grešku)?
[ ID411 @ 08.11.2009. 14:04 ] @
Svi file-ovi su istom folderu. Provjerio sam nazive i dobro su napisani. Kada obrisem #ifndef i #define nista se ne mijenja.
Kada su svi dijelovi u istom file-u program radi bez problema.
[ ID411 @ 08.11.2009. 14:21 ] @
Sada sam napisao #include "pravougaonik.h" i vise ne javlja problem od ranije.
Sada za svaku f-ju koju pozivam iz #include "pravougaonik.cpp" u glavnom programu javlja
[Linker error] undefined reference to `Pravougaonik::setDuzina()'
[ Mihajlo Cvetanović @ 08.11.2009. 15:29 ] @
Pa nedostaje funkcija...

Code:

pravougaoink.cpp
----------------
void Pravougaonik::setDuzina()
{
  ...
}
[ ID411 @ 08.11.2009. 17:42 ] @
Sve funkcije sam napisao i one se nalaze u tom file-u. Problem je sto kompajler nikako ne povezuje sve file-ove. Ista poruka se javlja za sve f-je a ja sam kopirao samo za jednu.
[ Mihajlo Cvetanović @ 08.11.2009. 17:58 ] @
Postavi ovde sadržaj fajla pravougaonik.cpp.
[ ID411 @ 08.11.2009. 18:40 ] @
pravougaonik.cpp
#include<iostream>
#include "pravougaonik.h"
using namespace std;

void Pravougaonik::setDuzina(){
float d;
do{
cout<<"Unesi duzinu: ";
cin>>d;
}
while(d<0);
duzina=(d<=20)?d:20;
}


void Pravougaonik::setSirina(){
float s;
do{
cout<<"Unesi sirinu: ";
cin>>s;
}
while(s<0);
sirina=(s<=20)?s:20;
}


float Pravougaonik::getDuzina(){
return duzina;
}

float Pravougaonik::getSirina(){
return sirina;
}
______________________________________
projekat.cpp
#include<iostream>
#include <stdlib.h>
#include "pravougaonik.h"
using namespace std;


main(){
Pravougaonik P;
P.setDuzina();
P.setSirina();
cout<<"a= "<<P.getSirina()<<endl;
cout<<"b= "<<P.getDuzina()<<endl;

system("Pause");
}
____________________________________
[ Mihajlo Cvetanović @ 08.11.2009. 20:02 ] @
Daj i sadržaj fajla pravougaonik.h. Možda si stavio klasu u namespace. U stvari, attachuj ovde čitav projekat u paketu.
[ ID411 @ 08.11.2009. 20:30 ] @
pravougaonik.h
#ifndef PRAVOUGAONIK_H
#define PRAVOUGAONIK_H

class Pravougaonik{
public:
Pravougaonik(){duzina=0.0;sirina=0.0;}
void obim();
void povrsina();
void setDuzina();
void setSirina();
float getDuzina();
float getSirina();
private:
float duzina,sirina;
};
#endif

[Ovu poruku je menjao ID411 dana 08.11.2009. u 23:18 GMT+1]
[ Mihajlo Cvetanović @ 08.11.2009. 21:50 ] @
U kom C++ okruženju ti ovo praviš? Nedostaje neki fajl. Recimo u Microsoft Visual C++, morao bi da imaš i jedan .sln i jedan .vcproj fajl. Ja sam napravio prazan projekat u VC++ i ubacio ova tri fajla, i lepo se napravilo. Morao sam doduše da dodam int kod main, jer main funkcija mora da vraća int, ali posle se lepo izbildovalo, i izvršilo.
[ ID411 @ 08.11.2009. 22:17 ] @
Radio sam u dev-c++. Sad sam ponovo pokusao da uradim, i uspjelo je. Nisam stavio file-ove u projekat. Hvala na pomoci
[ Goran Arandjelovic @ 13.11.2009. 16:13 ] @
Nije toliko bitno, ali:

Code:

#include <iostream>  // ispravno, neispravno bi po Standardu bilo iostream.h
#include <stdlib.h>   // neispravno! odgovarajući C++ header je <cstdlib>


Code:

int main() // povratna vrednost je tipa int
{
  // ...
  return(0);
}