Anonymous Infidel - Aborted Islam with a hanger wrote:
> I have two classes(class A, class main). class main uses a pointer to
> class A and class A uses a global pointer to main. My problem is I
> keep getting these errors: :(
> a.h(12) : error C2027: use of undefined type 'main'
> a.h(4) : see declaration of 'main'
> a.h(12) : error C2227: left of '->SomeDriver' must point to class/
> struct/union/generic type
> How do I fix this?
First off, you should probably rename your class from 'main' to smth
else. 'main' is the name of the function in your program that starts
its execution.
> Thx ahead of time.
> ********
> #include "main.h"
> #include "A.h"
> main *g_main = NULL;
> int _tmain(int argc, _TCHAR* argv[])
There is no standard function _tmain.
> {
> g_main = new main;
> g_main->a = new A;
> g_main->a->Print();
> g_main->a->SomeFunction();
> return 0;
> }
> *********
> #ifndef MAIN_H
> #define MAIN_H
> class A;
> class main
> {
> public:
> void SomeDriver()
> {
> printf ("driver called\n");
> }
> void PrintA()
> {
> a->Print();
Class 'A' hasn't been defined here yet. Consider pulling this
function out of the class definition into the translation unit.
> }
> A *a;
> };
> extern main *g_main;
> #endif
> *******
> #ifndef A_H
> #define A_H
> class main;
> class A
> {
> public:
> void SomeFunction()
> {
> g_main->SomeDriver();
Although your 'A.h' is supposedly included after your 'main.h',
if it weren't, 'g_main' is undefined here. Consider pulling this
function out of the class definition into a translation unit.
> }
> void Print()
> {
> printf ("Characters: a\n");
> }
> };
> #endif
Consider separating declarations and implementations of class
member functions. It's always a good idea for beginners.
V
--
Please remove capital 'A's when replying by e-mail
I do not respond to top-posted replies, please don't ask