Visual nie widzi niektórych klas ??

0

Witam.
Od niedawna tworzę pewien projekt w Visualu 2008 EE ( wcześniej pracowałem na IDE Borlanda) i na obecnym etapie prac napotkałem na dziwny problem. Mianowicie mając w pliku .h kilka-kilkanaście klas/struktur jak zainkluduję ten plik do innego headera to wywala mi błędy w stylu "undeclared identifier".
plik.h

#ifndef _PLIK_H_
#define _PLIK_H_
class Klasa : public Base
{
...
}
....
class KlasaN : public Base
{
...
}
#endif

plik1.h

#include "Plik.h"
...
KlasaN *pKlasaN;     // i tu mi pokazuje "undeclared identifier" KlasaN
...

Jest to bardzo dziwne bo nie ma jakiegoś ograniczenia co do ilości klas w pojedynczym pliku. A jak rozbiję to na wiele plików i zainkluduję je to wszystko jest w porządku i żadnych błędów nie zgłasza. W czym jest problem ? Bo sam nie mogę dociec o co chodzi...

0

Latwiej byloby gdybys podal kod bledu, jesli jednak klasy w headerze wygladaja tak jak podales, zgaduje, ze brakuje srednika za nawiasem klamrowym.

0

To co podałem to jest tylko taki ogólny zarys jak wygląda sytuacja., średniki są, wszystko jest na swoim miejscu. Wystarczy że przeniosę KlasęN do osobnego headera, zainkluduję go i już wszystko się kompiluje bez błędów.
A kody blędów to "error C2065: 'KlasaN/inne Klasy' : undeclared identifier",
Nie chcę dawać wszystkiego do osobnych headerów bo wtedy miałbym ok 400 plików nagłówkowych a przy tym to już łatwo się pogubić.

0

Niestety trudno uwierzyc, ze header jest dobrze napisany jednoczesnie widzac jak przedstawiles przyklad. Co wiecej, VS nie ma problemu z wieloma klasami w jednym pliku, wiec problem musi byc wlasnie w nim.
MSDN na kod bledu wypowiada sie w taki sposob:
http://msdn.microsoft.com/en-us/library/ewcf0002%28VS.80%29.aspx
tak wiec powodow moze byc wiele. Moze problem przestrzeni nazw? Czy masz tam jakis szablon? Uzywasz dziedziczenia, zachowales kolejnosc klas w pliku?

0

Projekt jest dość skomplikowany. Te brakujące średniki w przykładzie to był tylko błąd tutaj bo szybko pisałem wątek. Używam oczywiście forward declaration, dziedziczenia, templates + własna implementacja smart_pointera ( zliczanie referencji w klasie basowej CBase z której dziedziczą wszystkie inne i ta felerna również. Chyba jest to problem z całym IDE a nie tylko z kompilatorem bo teraz mi się całkowicie zawiesza Visual gdy włącza się podpowiedz IntelliSense'a dotycząca niektórych klas. Dziwne także jest to że jak próbuję dodać klasę o nazwie MaterialDesc ( tylko i wyłącznie o tej nazwie, wszystkie inne przepuszcza normalnie) to już nie tworzy mi się automatycznie jej ciało, konstruktor, destruktor mimo że tworzą się pliki .h i .cpp tylko, że puste. I w tej klasie nie działą IntelliSense a ppm na jakiejś zmiennej powoduje zawias całego IDE. Oczywiście Clean + Rebiuld zarówno projektu jak i solucji nic nie daje. Używam Visuala 2008 EE więc się nie dziwię że takie rzeczy się zdarzają i całość się sypie bo to przecież wersja dla ubogich. Trochę już używam Visuala ale wcześniej w 8-ce takich jaj nie było.

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