Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

modularno programiranje - error: invalid use of incomplete type

[es] :: C/C++ programiranje :: modularno programiranje - error: invalid use of incomplete type

[ Pregleda: 1757 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

maricn
za tastaturom

Član broj: 42409
Poruke: 79
*.digitalix.rs.



Profil

icon modularno programiranje - error: invalid use of incomplete type24.05.2009. u 02:13 - pre 180 meseci
ovako, imam sledece fajlove: Graph.cpp, Graph.h, bfs.h, queue.h... mozete pretpostaviti o cemu se radi... e sad, ovako sve to izgleda...

bfs.h:
Code:

#ifndef __BFS_H
#define __BFS_H
#include "Graph.h"
#include "queue.h"
#include <iostream>
#include <vector>

using namespace std;

vector<sCvor*> bfs(sCvor *s, sCvor *g) {
    vector<sCvor*> put;
    put.clear();
    sCvor* i;
    i = new sCvor;
    i->id = 12345;
    put.push_back(i);
    return put;
}


Graph.h:
Code:

#ifndef __GRAPH_H
#define __GRAPH_H
#include <iostream>
#include <vector>
#define MAXNODES 1000
#include "bfs.h"

using namespace std;

bool occupied[MAXNODES]={false};

struct sCvor {
  long int id;
};


queue.h:
Code:

#ifndef __QUEUE_H
#define __QUEUE_H
#include "Graph.h"

struct sCvor;

struct node {
    sCvor *c;
    node *next;
};

kada probam da kompajliram izbacuje mi sledece greske:
Code:

/media/hd1_/C[cpp] Projekti/graf maturski graph search/bfs.h||In function ‘std::vector<sCvor*, std::allocator<sCvor*> > bfs(sCvor*, sCvor*)’:|
/media/hd1_/C[cpp] Projekti/graf maturski graph search/bfs.h|14|error: invalid use of incomplete type ‘struct sCvor’|
/media/hd1_/C[cpp] Projekti/graf maturski graph search/queue.h|7|error: forward declaration of ‘struct sCvor’|
/media/hd1_/C[cpp] Projekti/graf maturski graph search/bfs.h|15|error: invalid use of incomplete type ‘struct sCvor’|
/media/hd1_/C[cpp] Projekti/graf maturski graph search/queue.h|7|error: forward declaration of ‘struct sCvor’|
||=== Build finished: 4 errors, 0 warnings ===|

moze pomoc? hvala unapred :) alavh unazad... ;)
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: modularno programiranje - error: invalid use of incomplete type24.05.2009. u 10:15 - pre 180 meseci
U funkciji bfs ne možeš da radiš new sCvor, kad se u tom trenutku još ne zna šta je tačno sCvor (to ti kompajler govori). A ne zna se tačno jer imaš rekurzivno pozivanje jednog hedera u drugom hederu. Evo objašnjenja:

1. Kompajlira se Graph.cpp
2. Kompajler naleti na #include "Graph.h" i uključi ga
3. __GRAPH_H nije definisan, pa se parsira sadržaj Graph.h
4. Kompajler naleti na #include "bfs.h" i uključi ga
5. __BFS_H nije definisan, pa se parsira sadržaj bfs.h
6. Kompajler naleti na #include "Graph.h" i uključi ga
7. E sada __GRAPH_H jeste definisan, pa se preskače sadržaj Graph.h
8. U nastavku parsiranja bfs.h dolazimo do funkcije bfs, ali sCvor još nije definisan, i eto greške.

Rešenje: prebaci funkciju bfs u bfs.cpp (gde joj je i mesto) i izbaci oba #include (Graph iz bfs, kao i bfs iz Graph), ali ubaci #include "Graph.h" u bfs.cpp. U bfs.h treba da stoji

struct sCvor;
std::vector<sCvor*> bfs(sCvor *s, sCvor *g);

I još jedna napomena, savetujem da ne koristiš using namespace unutar zaglavlja, nego da pišeš std:: svuda gde je potrebno.
 
Odgovor na temu

maricn
za tastaturom

Član broj: 42409
Poruke: 79
*.digitalix.rs.



Profil

icon Re: modularno programiranje - error: invalid use of incomplete type24.05.2009. u 15:47 - pre 180 meseci
veliko hvala, Mihajlo... ;) za sve predloge... btw, jos malo sam se cimao, ali sam sve sredio... poz
 
Odgovor na temu

[es] :: C/C++ programiranje :: modularno programiranje - error: invalid use of incomplete type

[ Pregleda: 1757 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.