1

私は C++ が初めてで、2 つのオブジェクト間の変換を行うプログラムを作成しようとしています。と がClass1ありClass2ますConvert。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;
}

これについていくつか質問があります。別のクラスを作成した理由は、他のクラスに変換関数を持たせたくないからです。

  1. これは、他のクラスから離れたくない関数を使用する良い方法ですか?
  2. このクラスをコンパイルすると、「Class2 の前にイニシャライザが必要ですが、Class2 オブジェクトを返したいので、関数を定義する必要があるのではないでしょうか?」と言って失敗します。

繰り返しになりますが、私は C++ を初めて使用します。学習しようとしている本がいくつかありますが、このようなオブジェクトの使用方法については実際には説明していません。完全に間違っています。

4

2 に答える 2

3

C++ では、関数を直接使用するだけでよく、 class は必要ありません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;
}

これは基本にすぎないことに注意してください。いくつかの点で改善できますが、開始して自分で実験するのに役立つはずです.

于 2013-10-04T23:56:29.093 に答える
1

2 番目の質問に関して、コードがコンパイルされない理由は、 の後の中括弧を忘れたためですConvert::Convert()。(またはセミコロンかもしれません。しかし、ctorを定義したかったと思います)

于 2013-10-04T23:57:19.560 に答える