[ 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);
}
Copyright (C) 2001-2024 by www.elitesecurity.org. All rights reserved.
|