- 締切済み
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" のコメントがでてしまいます。どのように改善すれば良いでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- 麻野 なぎ(@AsanoNagi)
- ベストアンサー率45% (763/1670)
多分、何かの演習で、回答者に求められているのが、構造体 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)
あと, 何がなんだかさっぱりわからない Point の中身もほしいが.... いったいどこに「ポインタ」の出てくる余地があるというのか.
- Wr5
- ベストアンサー率53% (2173/4061)
>必ず "Define the Triangle structure. Then, uncomment #define TRIANGLE_DONE in h19.h" のコメントがでてしまいます。 main.cppでTRIANGLE_DONEが定義されていないからでしょう。 で……こういう「ファイルの一部分」ではなく、全体を掲示した方がいいんじゃないですかね。 main.cppでh19.hをincludeしているのかどうかも不明ですよ?