我正在使用Qt 4.5,C++也是如此。我有这样的课

 class CClass1
    {
         private:
               struct stModelDetails
               {
                      QString name;
                      QString code;
                      ..... // only variables and no functions over here
               };
               QList<stModelDetails> m_ModelDetailsList;

         public:
               QList<stModelDetails> getModelDetailsList();
               ...
    };

在此,我有一些将填充m_ModelDetailsList;的函数

我还有另一个类CClassStructureUsage,我将在其中调用getModelDetailsList()函数。现在,我需要遍历QList并从每个name获得codestModelDetails

现在的问题是,甚至包括了 CClass1的头文件,它也无法识别CClassStructureUsage中的stModelDetails类型。当我得到结构 list 时
QList<stModelDetails> ModelList = obj->getModelInformationList();

它说stModelDetails:未声明的标识符

我如何能够从结构中获取值?我在这里做错什么吗?

最佳答案

您已经获得了有关如何直接解决问题的一些建议。但是,我建议您退后一会,以考虑您要在此处完成的工作。首先,您说过您只想要每个name项的stModelDetails成员。基于此,我将从更改函数以仅返回以下内容开始:

QList<QString> GetModelDetailNames();

或者,很可能:
QVector<QString> GetModelDetailNames();

前者有两个优点。首先,它减少了您需要复制的数据量。其次,它使客户端代码不必知道CClass1的更多实现细节。后者保留了这些优点,并增加了一些优点,主要是在您没有指出要使用链表的任何原因的情况下,避免了链表的开销(这些原因确实很合理)。异常)。

替代方法是弄清楚为什么外部代码需要访问大量CClass1的内部数据,以及CClass1直接提供该服务而不需要外部代码访问其数据是否有意义。

关于c++ - 由getter获取的其他类中的结构变量声明,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3053681/

10-12 22:47