Linuxでg++を使用してプログラミングしていますが、ヘッダーの後のポイントまたは別のヘッダーファイルで、後で定義するヘッダーファイルでクラスまたはデータ型を使用する必要があるという問題が頻繁に発生します。
たとえば、次のヘッダーファイルを見てください。
class example
{
mydatatype blabla;
};
struct mydatatype
{
int blablainteger;
char blablachar;
};
mydatatypeは定義される前に使用されるため、これによりエラーが発生します。通常、次のように変更します。
struct mydatatype; // <-- class prototype
class example
{
mydatatype *blabla; // <-- now a pointer to the data type
// I will allocate the data during runtime with the new operator
};
struct mydatatype
{
int blablainteger;
char blablachar;
};
今では動作します。多くの場合、上記の定義を配置するか、必要なヘッダーを含めることができますが、ヘッダーにヘッダーを含めたり、定義の順序を調整したりしたくない場合は、常に面倒になります。
私が示した解決策は通常は機能しますが、今では新しい現象に遭遇しました。今回のデータ型はクラスではなくtypedefであり、typedefのプロトタイプを使用することはできず、typedefに組み込まれている実際のデータ型を使用したくありません。
これに対する解決策はありますか?