0

Radian クラスと Degree クラスを作成しています。各クラスには、他のタイプのオブジェクトを引数として取り、度/ラジアン変換を行い、その結果で度またはラジアンパラメーターを初期化するコンストラクターがあります。

Class Radian
{
    private:
      double radians;
    public:
      // ......
      Radian(Degree d) {
      radians = d.getDegrees() * (pi / 180);
      }
      // ...

そして、学位クラスは同じ方法ですが、反対です。何らかのリンケージ エラーがないことを確認するには、各ヘッダーに他のヘッダーを #include する必要がありますか? それぞれの .cpp はどうですか? 前方クラス宣言が必要ですか?

4

4 に答える 4

0

私はおそらく次のことをするでしょう:

forward.hpp

#pragma once
class Radian;
class Degree;

radian.hpp

#pragma once
#include "forward.hpp"

class Radian {
    public:
        Radian(Degree d);

    private:
        double radians;
};

ラジアン.cpp

#include "radian.hpp"
#include "degree.hpp"

Radian::Radian(Degree d) {
    radians = d.getDegrees() * (pi / 180);
}

度.hpp

#pragma once
#include "forward.hpp"

class Degree {
    public:
        Degree(double x);
        double getDegrees() const;
    private:
        double deg;
}

度.cpp

#include "degree.hpp"

Degree::Degree(double x) {
    deg = x;
}

double Degree::getDegrees() const {
    return deg;
}
于 2013-05-17T15:52:36.407 に答える
0

この場合、前方宣言を使用する必要があります。

于 2013-05-17T15:16:35.917 に答える