是否可以指向在類中另一個文件中定義的結構?指向另一個文件中定義的結構的指針
我試圖像下面的代碼,但得到這個錯誤:
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值。 我有一種感覺,這不是最好的辦法。我打開提示! –