我正在使用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
获得code
和stModelDetails
。现在的问题是,甚至包括了 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/