-4

私はC++にかなり慣れていないので、正しく型キャストする方法がわかりません。または、型キャストが必要になる可能性のあるこのメソッドでパラメーターをキャストする方法がわかりません。

関数 getRadius があります

double Circle_getRadius(Circle* _this)
{
    return _this->radius;
}

そして、次のように getArea メソッドで this メソッドを使用したい

double Circle_area(Shape* _this)
{
    const double PI = 3.1415927;
    double radi = Circle_getRadius;
    return PI *  radi * radi;
}

Circle_getRadius で「エラー: タイプ "double( )(Circle _this)" の値を使用してタイプ "double" のエンティティを初期化することはできません。これはどういう意味ですか?

私もエラーでこれを試しました

double Circle_area(Shape* _this)
{
    const double PI = 3.1415927;
    return PI *  radius * radius;
}

radius がエラーを取得している場所 "Error:identifier "radius" is undefined.何か提案はありますか?

4

4 に答える 4

5

これはキャスティングとは関係ありません。(とにかく、通常は何もキャストしないでください。)

関数呼び出しの括弧と引数を忘れました:

double radi = Circle_getRadius(_this);
//                            ^^^

(関数名自体も値ですが、その型は関数ポインター型、つまり typedouble (*)(Circle *)です。)

Shape*これは、 a が aに変換可能であることを前提としていますがCircle*、これはありそうにありません。一方を他方にキャストすることもできます ( と言って、それがから (非仮想的に) 派生static_cast<Circle*>(_this)すると仮定する) が、私が言ったように、一般的にこれを行うべきではなく、おそらく正しくないでしょう。CircleShape

于 2013-05-24T22:06:23.677 に答える
1
double radi = Circle_getRadius;

する必要があります

double radi = Circle_getRadius(_this);
//                                                    ^^^^^^^

関数を呼び出すのを忘れました。

于 2013-05-24T22:06:51.463 に答える
1
 double radi = Circle_getRadius;

は関数呼び出しではないため、呼び出し先関数に渡すパラメーターを指定する必要があります。

double radi = Circle_getRadius(_this); //assume Shape is subclass of circle
于 2013-05-24T22:07:03.510 に答える