开发者

C++ multiple file error

i have been attempting to pass an object into a function that belongs to a class both classes are in there own files...but when i try to pass the object as an argument for the function prototype it gives me an error saying that the object doesn't exist... ill provide some pseudo code to demon开发者_运维技巧strate my problem

//class 1 .h
class Class1
{
    public:
    void function(Class2);//this is were one of my errors 
};



//class 1 .cpp
void Class1::function(Class2 object )//another error 
{
//stuff happens
}


//main.cpp
//then i simply call these functions like this

Class1 object;
Class2 object2;


int main()
{


    object.function1(object2);
    return 0;
}

and i get errors "Class2' has not been declared"

and errors about Class1 prototype does not match any classes.... if someone could explain what im doing wrong it would be a great help also if more code is needed just ask and i will post it.

EDIT

when i was attempting to include class2`s header in class one i was using the wrong director as i forgot i had separated .h files into there own folder anyway now i have fixed that it all work thanks a lot everybody.


You'll need to include Class2's header file in Class1.h. That is:

//////////////////
//Class1.h

#include "Class2.h"

class Class1
{
public:
    void function(Class2 arg);
};

If you are only using a pointer to Class2 as an argument, then you can forward declare Class2 instead of including the header, that is:

//////////////////
//Class1.h

//Forward declare Class2 so the compiler knows the name exists
class Class2;

class Class1
{
public:
    void function(Class2 *arg);
};

There's some more info here if you're interested.


Well, in fact Class2 has not been declared!

So,

// Class2.h:
class Class2
{

};

// Class1.h:
#include "Class2.h"

class Class1
{
    public:
    void function(Class2 object);
};

// Class1.cpp:
#include "Class1.h"
void Class1::function(Class2 object)
{
    //stuff happens
}

// main.cpp:
#include "Class1.h"
Class1 object;
Class2 object2;

int main()
{
    object.function1(object2);
    return 0;
}


Have you tried doing this yet?

main.cpp:


#include "class1.h"
...
int main()
{
    Class1 object;
    Class2 object2;

    object.function1(object2);
    return 0;
}

The trick is to use the #include "class1.h" at the top of your main.cpp file


Actually you need to make the compiler aware of the classes that u are going to use in the file anywhere.

Have a look at a very similar Question : http://www.gamedev.net/topic/553424-c-calling-member-of-another-class-in-another-file/

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜