如何在嵌套类中实例化结构?

问题描述 投票:0回答:1

所以我到处搜索,但无法得到我的问题的直接答案。我已经有一段时间没有接触 C++了,所以我想采用极简的编码结构,但我遇到了一个问题。

我有一个父类在 .h 文件中调用 Data

我在数据中嵌套了另外 2 个类,称为“内存”和“函数”

我创建了 2 个 .cpp 文件,每个嵌套类一个,“Memory.cpp”存储变量和结构数据,“Functions.cpp”存储函数数据

我在“记忆”课程上遇到问题

我根本无法找到实例化“Memory”类结构的方法或解决方案

这是我的 Classes.h 文件

#pragma once
#include "main.h"

class Data
{
public:

    class Memory
    {
    public:
        //I ALREADY CODED THE STRUCTS IN MY "MEMORY.CPP" FILE
        struct sig;
        struct set;
        struct val;

        //I TRIED WRITING THIS INSIDE THIS PUBLIC CLASS MEMORY AND ITS AN ERROR
        //sig sig0;
        //set set0;
        //val val0;
    };


    class Functions
    {
    public:
        void setup(Memory& gMem);
        void mainLoop(Memory& gMem);
    };

    Memory gMem;
    Functions gFunc;
    

    Data()
    {
        //I'M TRYING TO PASS BY REFERENCE SELF gMem INTO SETUP FUNCTION, 
        //WHICH THE FUNCTION ACCESSES THE STRUCTS INSIDE 
        //THE PUBLIC MEMORY CLASS
        //BUT IT CANNOT EVEN GRANT THIS
        this->gFunc.setup(this->gMem);
        this->gFunc.mainLoop(this->gMem);
    }
};

这是我的main.cpp文件

#include "main.h"

int main()
{
    Data run;
    return 0;
}

这是我的 main.h 文件

#include <iostream>
#include <vector>
#include "Classes.h"

我希望这是足够的信息来解决我的问题,我不想发布我的“Memory.cpp”和“Functions.cpp”文件,它的信息太多了。谢谢所有好心人帮助我。

c++ struct nested inner-classes
1个回答
0
投票

类成员需要是完整类型,如果类型不完整则只能使用指针或对其的引用。

因此,您要么需要将

sig
set
val
的定义移到头文件中,要么将
sig0
set0
val0
放入引用中(谨慎使用,引用成员有陷阱)或(最好是智能的)指针。

© www.soinside.com 2019 - 2024. All rights reserved.