クラス内から別のファイルで定義された構造体を指すことはできますか?別のファイルで定義されている構造体へのポインタ
私は以下のコードのようにそれを試してみましたが、このエラーを取得:
cannot convert 'main()::list*' to 'entry::list*' in assignment
はmain.cppに:
#include "entry.h"
#include <vector>
int main()
{
struct list
{
std::vector<entry*> entryVector;
int temp;
};
list A;
entry B;
B.ptrToStruct = &A;
return 0;
}
entry.h:
#ifndef ENTRY_H
#define ENTRY_H
#include <string>
class entry
{
public:
struct list; //prototype does not work
std::string text;
struct list* ptrToStruct;
};
#endif // ENTRY_H
私もしてみましたこのようなプロトタイプを書く:
struct main::list;
"main 'が宣言されていないため、これは動作しませんでした。
まず、あなたの用語について少し注意してください。*プロトタイプ*は関数の前方宣言です。あなたの 'entry'クラスでやっていることは、単に' entry :: list'クラスを宣言することです。あなたの問題について:いいえ、他のスコープの関数でローカルに宣言または定義されたシンボルにアクセスすることはできません。 –
ところで、アイテムを相互にリンクさせるのは少し珍しいことです。それぞれの 'entry'が' list'によって所有されている場合、それが属するリストを追跡しなければならないのはなぜですか?エントリの追加と削除は複雑になります。 –
設定メニュー用です。エントリは実行時に変更されません。 ptrToStructがそのメニューエントリのサブメニューを指すようにする必要があります。 私の構造体は、エントリのベクトルを保持する私のリストです。これらのエントリの中にはサブリストがあります。それで私はポインタが必要なのです。構造体には、選択されたエントリを保存するintも保持されます。 私はこれが最良の方法ではないと感じています。私はヒントのためにオープン! –