1

いくつかのC#コードをC ++に移植していますが、次の問題があります。以下の簡略化されたコードを参照してください。私のファイルシステムクラスは、ファイルシステムクラスから継承するディレクトリクラスに依存しています。これはでは機能するようですが、では機能しC#ませんC++。これを破る簡単なトリックはありますか?

class fileSystemItem{
    private:
    Directory* parent;
};

class Directory : public fileSystemItem{

};
4

2 に答える 2

6

の前方宣言directory

class Directory;
class FileSystemItem{
    private:
    Directory* parent;
};

class Directory : public FileSystemItem{

};

一貫した大文字化に注意してください。

于 2013-01-09T08:28:06.027 に答える
2

問題は、C++ では、参照する前にすべての型を宣言する必要があることです。これを修正するには、いわゆる前方宣言を実行して、基本クラスに最初に現れる前にサブクラスを宣言します。

class Directory;の定義の前に行を追加するだけですfileSystemItem。また、あなたの例ではDirectoryDirectoryそれ自体の定義とfileSystemItem. 識別子 (C# と同様) は大文字と小文字が区別されるため、これは機能しません。

結果の宣言は次のようになります。

class Directory;
class fileSystemItem{
    private:
    Directory* parent;
};

class Directory: public fileSystemItem{

};
于 2013-01-09T08:34:47.503 に答える