• 締切済み

C++ ポインタについて質問です

c++ で三角形の周囲を計算で出したいのですが、エラーがでてしまいます。うまくpoint が機能していないようなのですがどこが悪いのでしょうか?? main.cppの中身 #ifdef TRIANGLE_DONE { // Define three points Point p1 = {1, 3}, p2 = {-2, -2}, p3 = {3, -1}; // Create a Triangle variable Triangle t = {p1, p2, p3}; // Now, test the perimeter() function assertDoubleEqualsMsg("Check perimeter of Triangle", 15.4021, perimeter(t), 1E-5); } #else cerr << "Define the Triangle structure. Then, uncomment #define TRIANGLE_DONE in h19.h" << endl; #endif hの中身 #define TRIANGLE_DONE struct Triangle{ Point a, b, c; }; #ifdef TRIANGLE_DONE /** * Calculates the perimeter of the Triangle t. * @param t the Triangle to examine. * @return the perimeter. */ double perimeter(const Triangle& t); #endif h19.cppのなかみ double premiter(const Triangle& t) { double p = 0; p = t.p1 + t.p2 + t.p3; return p; } 必ず "Define the Triangle structure. Then, uncomment #define TRIANGLE_DONE in h19.h" のコメントがでてしまいます。どのように改善すれば良いでしょうか?

みんなの回答

回答No.3

多分、何かの演習で、回答者に求められているのが、構造体 Triangle を定義すると言うことかなと思います。 で、Triangle を定義した後で、コメントアウトされていた、#define TRIANGLE_DONE のコメントを取ると、全体として、動くプログラムになるようになっているのかなと。 で、これで、Define the Triangle structure. Then, uncomment #define TRIANGLE_DONE in h19.h が出力されていないと言うことは、inh19.h がインクルードされてないのでしょう。 さて、 struct Triangle{ Point a, b, c; }; となっています。 で、struct Point は、いかにも、「点」を示す、double のペアだという雰囲気が漂っています。 一方で、double premiter(const Triangle& t) で、struct Triangle のメンバーであるはずの、p1, p2, p3 がアクセスされています。 ということは、この時点で、Triangle の定義は間違っているか、足りないかです。 C++の世界では、struct も class と同じ能力を持つので、 struct Triangle { Point a, b, c; // こっちは座標で定義 double p1, p2, p3 // こっちは辺の長さ }; という定義で、a, b, c を決めたら、p1, p2, p3 も自動的に決めるようなこともできますが、それを求めているのかなぁ?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

あと, 何がなんだかさっぱりわからない Point の中身もほしいが.... いったいどこに「ポインタ」の出てくる余地があるというのか.

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.1

>必ず "Define the Triangle structure. Then, uncomment #define TRIANGLE_DONE in h19.h" のコメントがでてしまいます。 main.cppでTRIANGLE_DONEが定義されていないからでしょう。 で……こういう「ファイルの一部分」ではなく、全体を掲示した方がいいんじゃないですかね。 main.cppでh19.hをincludeしているのかどうかも不明ですよ?

関連するQ&A

専門家に質問してみよう