2013-10-04 43 views
1

我是C++的新手,我試圖讓程序在兩個對象之間進行轉換。我有Class1,Class2Convert。我想要一個接受Class1對象的函數,將它轉換爲Class2對象並返回Class2對象。現在我Convert類基本上是:在函數中使用類對象

CONVERT.H

#ifndef Convert_H 
#define Convert_H 
#include "Class1.h" 
#include "Class2.h" 

class Convert 
{ 
public: 
    Convert(); 
    Class1 c1; 
    Class2 c2; 
    Class2 C1ToC2(Class1); 

}; 
#endif // Convert_H 

Convert.cpp

#include "Convert.h"" 
#include "Class1.h" 
#include "Class2.h" 

Convert::Convert() 

Class2 Convert::C1ToC2(Class1 c1) 
{ 
    //conversions 

    return c2; 
} 

我有這幾個問題。我不想在其他類中使用convert函數,這就是爲什麼我創建了一個單獨的類。

  1. 這是使用我不想分開其他類的功能的好方法
  2. 當我編譯這個類失敗預計初始等級2之前,但既然說:」我想回到一個Class2對象不是我如何定義函數嗎?

再次我是C++的新手,我確實有一些我正在嘗試學習的書,但他們並沒有真正知道如何要使用這樣的對象,所以我很抱歉,如果這是一個愚蠢的問題,我完全錯誤。

回答

3

在C++中,您可以直接使用函數,而不需要類Convert

Convert.h

#ifndef Convert_H 
#define Convert_H 

#include "Class1.h" 
#include "Class2.h" 

// declare the function 
Class2 convert(const Class1& input); 

#endif 

Convert.cpp

#include "Convert.h" 

// define the function 
Class2 convert(const Class1& input) 
{ 
    Class2 result; 
    // do conversion 
    return result; 
} 

注意,這僅僅是基礎,它可以從幾個方面加以改進,但它應該幫助你上手實驗在你自己的。

+0

我在哪裏定義這個函數?我只是創建一個空白文件? –

+0

@ rsay3我編輯了答案,以顯示你的文件應該是什麼樣子,我認爲這比在評論中解釋更容易。 –

+0

謝謝!最後一個問題,包含變量的問題是否仍然包含在頭文件中,或者我可以在.cpp函數中啓動它們? –

1

關於你的第二個問題,代碼不能編譯的原因是因爲你在Convert::Convert()之後忘了花括號。 (或者可能是分號,但我假設你想定義ctor)

+0

'Convert :: Convert();'也不合法。在課堂以外的成員的聲明必須實際定義它。 – aschepler

+0

從來沒有嘗試過。感謝您的更正! – Yoctohan

相關問題