Qt库如何解决QStringList
和QString
类的前向声明问题。两个类都有能力使用外部操作,如果你调用QString::split()
它将返回QStringList
个对象,而在QStringList
我有操作符<<添加QString
个对象......
当我试图让我自己的班级做同样的工作时,我有错误
前瞻性宣言......
我的标题是: stringList.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&amp;,stringList *)中,我有一部分代码stringList :: insert,在那一行我有错误:
monString.cpp|142|error: invalid use of incomplete type 'class stringList'
我如何解决这个问题,以及Qt如何解决这个问题......
答案 0 :(得分:1)
monString.cpp需要#include "stringList.h"
。
如果您尝试让两个头文件相互包含,则只会遇到循环依赖性问题。但是在源文件中一定要包含所需的所有类定义。