2011-06-04 21 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