我的英语不好,这就是为什么我的问题可能是错误的。但是我有一个问题,我不知道如何解决,或者甚至可能解决。我定义了2种结构:typedef struct{ UINT16 ScriptNumber; std::string ScriptText;} StepStruct;typedef struct{ std::string SequenceName; std::string DisplayName; StepStruct SequenceSteps;} SequenceStruct;如您所见,第一个结构是第二个结构的成员。因此,我希望两个结构都具有动态性。因此,我从类型StepStruct创建了2个动态数组,并从类型SequenceStruct创建了1个动态数组。StepStructs类型的两个动态数组定义如下:StepStruct gsFirstSkript[] ={ { 1 , "SkriptText One"}, { 2 , "SkriptText Two"}, { 45, "SkriptText Three"}}StepStruct gsSecondSkript[] ={ { 48, "SkriptText One"}, { 2 , "SkriptText Two"}, { 45, "SkriptText Three"}}那些要构造的类型为StepStruct。现在,我想对SequenceStruct类型执行相同操作,但是我想在结构成员SequenceSteps下分配我已经拥有的两个数组。我的意思是这样的:SequenceStruct gsSequenceList[] ={ { "FirstScript", "Test One", gsFirstSkript}, { "SecondScript", "Test Two", gsSecondSkript}}如果现在我想读取Member gsSequenceList,则无法在其SequenceSteps索引下访问任何信息!这意味着数据没有被复制!我尝试过指针但没有成功。UINT16 lTestVal = gsSequenceList[0].SequenceSteps[2].ScriptNumber;那么,我可以管理这一工作,并且lTestVal包含值45吗? 最佳答案 typedef struct{ std::string SequenceName; std::string DisplayName; StepStruct* SequenceSteps;} SequenceStruct;这将允许代码进行编译,并且您显示的测试片段将起作用。但是,这不会复制数据。如果您更改gsFristSkript,它将在gsSequenceList中也进行更改。如果要复制数据,则可以显式地进行复制,使用构造函数或仅使用vector 。这是vector的解决方案:#include <vector>...typedef struct{ std::string SequenceName; std::string DisplayName; vector<StepStruct> SequenceSteps;} SequenceStruct;vector<StepStruct> gsFirstSkript ={ { 1 , "SkriptText One"}, { 2 , "SkriptText Two"}, { 45, "SkriptText Three"}}vector<StepStruct> gsSecondSkript ={ { 48, "SkriptText One"}, { 2 , "SkriptText Two"}, { 45, "SkriptText Three"}}SequenceStruct gsSequenceList[] ={ { "FirstScript", "Test One", gsFirstSkript}, { "SecondScript", "Test Two", gsSecondSkript}}
10-08 18:14