第15問

以下は、第14問で取り上げたC言語のプログラムです。これを、C++のプログラムとして実行したいと考えました。でも、C++のコンパイラがエラーを出すので、動かすことができません。

どのように修正すれば、コンパイルエラーにならずにC++として実行できるようになるか、分かりますか?
main.cpp
#include <stdio.h>
#include <stdlib.h>

typedef struct {
  double base;
  double height;
} Triangle;

double TriangleArea(const Triangle *triangle) {
  return triangle->base * triangle->height / 2.0;
}

int main(void) {
  Triangle *triangle = malloc(sizeof(Triangle));
  if (triangle) {
    triangle->base = 6.0;
    triangle->height = 4.0;

    printf("area = %f\n", TriangleArea(triangle));

    free(triangle);
    triangle = 0;
  }

  return EXIT_SUCCESS;
}
期待される実行結果
area = 12.000000
あれれ?「C言語実力診断クイズ」っていうタイトルはウソですかー?
それは文句かしら?
ごめんなさい。ちょっとツッコミを入れてみたかっただけです。
まぁいいわ。C++を使ったことはあったかしら?
一応あるんですけど……。C言語のプログラムってC++でも動くんじゃないんですか?
そうでもないのよ。よく似た言語ではあるんだけどね。
えー。上位互換だって聞いてたんですけど……。
malloc()のあたりに注目してみましょう。