2013-10-04 4 views
1

저는 C++을 처음 사용하고 두 객체 간의 변환을 수행하는 프로그램을 만들려고합니다. 나는 Class1, Class2Convert입니다. 나는 Class1 객체를 가져 와서 Class2 객체로 변환하고 Class2 객체를 반환하는 함수를 원한다. 지금 내 변환 클래스는 기본적으로 :함수에서 클래스 객체 사용

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

나는 이것에 대해 몇 가지 질문이 있습니다. 나는 다른 클래스에서 변환 함수를 갖고 싶지 않기 때문에 별도의 클래스를 만들었습니다. 나는이 클래스를 컴파일 할 때이 Class2의 전에하지만 이후 예상 초기화 "라는 실패

    1. 이 난을 반환하려면 내가 떨어져 다른 클래스의 싶지 않아 기능을 사용할 수있는 좋은 방법입니다 Class2 객체는 함수를 정의해야하는 방법이 아닙니까?

    다시 C++을 처음 접했을 때 배울려고 노력하는 책이 몇 개 있습니다. 이처럼 멍청한 질문이라면 사과해야합니다. 나는 완전히 잘못하고 있습니다.

  • 답변

    3

    C++에서는 함수를 직접 사용하기 만하면 클래스 Convert이 필요하지 않습니다.

    #ifndef Convert_H 
    #define Convert_H 
    
    #include "Class1.h" 
    #include "Class2.h" 
    
    // declare the function 
    Class2 convert(const Class1& input); 
    
    #endif 
    

    Convert.cpp에 :

    Convert.h에서

    #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