2011-06-04 36 views
2

我一直在试图传递一个对象到一个属于一个类的函数中,这两个类都在它们自己的文件中......但是当我尝试将该对象作为函数原型的参数传递给它时我的错误,指出该对象不存在...生病提供一些伪代码来证明我的问题C++多文件错误

//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; 
} 

,我也得到“等级2' 还没有被宣布为”
和错误的Class1左右原型确实错误不匹配任何类.... 如果有人可以解释我做错了什么,这将是一个很大的帮助,如果需要更多的代码只是问,我会发布它。
编辑

当我试图将包括一个我用错了导演,因为我忘了我有文件分离成.H有自己的文件夹反正现在我有固定类class2`s头,它的所有工作非常感谢大家。

+1

你在哪里定义class2? – TarunG 2011-06-04 00:51:28

回答

3

你需要在Class1.h Class2中的头文件的顶部。那就是:

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

#include "Class2.h" 

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

如果你只使用一个指针的Class2作为参数,那么你可以向前声明 Class2中,而不是包括标题,那就是:

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

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

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

还有更多一些如果您有兴趣,请致电here

+0

啊好赶。我假设他在Class1.h&.cpp文件中有Class2。 – 2011-06-04 00:49:48

+0

感谢您的帮助现在所有的作品:D +1和接受的答案 – 2011-06-04 01:01:51

0

你试过这样做了吗?

main.cpp中:


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

    object.function1(object2); 
    return 0; 
} 

诀窍是使用#include "class1.h"在你的main.cpp文件

+0

噢是的,我忘了在示例中添加代码...但是,它是在那里:) – 2011-06-04 00:56:36

3

那么,其实Class2还没有被宣布!

所以,

// 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; 
} 
+0

+1这是我的确切错误 – 2011-06-04 01:15:19

+0

谢谢:)很高兴它帮助你。 – 2011-06-04 01:28:51