以下で説明するクラス構造を持つ単純なインタープリターを C++ で書き始めましたが、ヘッダーが苦労していたので、やめて Java で書き直しました。C++ では明らかに許可されていない基本的な構造を次に示します。
main.cppには main 関数が含まれており、 printer.hを呼び出すことができるクラスのヘッダーが含まれています(その単一の void メソッドはprinter.cppに実装されています)。ここで、同一の他の 2 つのクラスを想像してください。どちらも を呼び出したいので、それぞれにprinter.hPrinter::write_something();
を含めました。ここに私の最初の質問があります。#include <iostream>
ヘッダーは一度?(まあ、同じファイルにある限り、おそらく私のものでも同じことができると思います。しかし、間違っているかもしれません。)宣言と実装/定義の違いは理解していますが、そのコードは私にクラスの再定義エラー。理由がわかりません。そして、これが私の心を吹き飛ばすことです (そして、おそらく私がこれを理解していない理由を示しています): main.cppの先頭にprinter.hを含めて、他の 2 つのクラスのクラスを使用することはできません。2つのクラス (ヘッダー) のいずれかに問題なくprinter.hをインクルードできることはわかっていますが、 main.cppにクラスをインクルードする前にそれをインクルードするのとなぜこれが異なるのかわかりません(そうすると、私にはクラスが見つからないというエラーがあります)。
うんざりしたとき、私が使っていた OOP はとにかくかなり強引だったので、C に移行することを考えましたが、すべてを 1 つのファイルに記述しないと同じ問題に遭遇します。C++ を知っているのに、コンパイルの問題で正しく使えないというのは、もどかしいものです。
これを解決していただければ幸いです。ありがとう!