【发布时间】:2015-12-15 22:12:29
【问题描述】:
Qt 库如何解决 QStringList 和 QString 类的前向声明问题。这两个类都可以使用外部进行操作,如果您调用 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