【问题标题】:stringList and string字符串列表和字符串
【发布时间】:2015-12-15 22:12:29
【问题描述】:

Qt 库如何解决 QStringListQString 类的前向声明问题。这两个类都可以使用外部进行操作,如果您调用 QString::split() 它将返回 QStringList 对象,并且在 QStringList 我有运算符 QString 对象... 当我尝试让自己的班级做同样的工作时,我遇到了错误 前向声明...

我的标题是: 字符串列表.h:

#ifndef STRINGLIST_H
#define STRINGLIST_H
#include "monString.h"
class stringList
{
    public:
        stringList();
        virtual ~stringList();
        void insert(monString newString);
        void prikazi();
        int size();
        monString & operator[](int offset);
    protected:
    private:
        stringList *slNext;
        monString *szString;
        int iOffset;
        static int iStringSize;
        stringList *lastNext;
};
#endif // STRINGLIST_H

和 monString.h:

#ifndef MONSTRING_H
#define MONSTRING_H
#include <iostream>

using namespace std;
class stringList;

class monString{
private:
    char *dString;
    int dStringLongeur;
public:
    monString();
    monString(char* newString);
    ~monString();
    operator char*();
    int sizeOfString()const;
    monString(const monString &rhs);
    char operator[](int offset)const;
    char & operator[](int offset);
    monString &operator=(const monString &rhs);
    monString operator=(const char * const newString);
    monString operator+(monString &rhs);
    void operator+=(monString &rhs);
    void splitString(char);
    void split(const char &ch,stringList*);
    void isprazni();
};

在函数 split(const char&,stringList*) 我有部分代码 stringList::insert,在那一行我有错误:

monString.cpp|142|error: invalid use of incomplete type 'class stringList'

我该如何解决这个问题,以及 Qt 是如何解决这个问题的...

【问题讨论】:

  • QStringList 中转发声明 QString,反之亦然在头文件中。在QStringList.cpp 中包含QString.h,在QString.cpp 中包含QStringList.h
  • operator= 应该通过引用返回
  • @M.M 我会记住的。很好的通知。

标签: c++ qt declaration forward-declaration qstring


【解决方案1】:

monString.cpp 需要#include "stringList.h"

如果你试图让两个头文件相互包含,你只会遇到循环依赖问题。但请确保在源文件中包含您需要的所有类定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 2017-11-07
    • 2022-01-21
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多