我是qt创作者的新手。 gui.cpp中有错误
24:错误:在's1'之前预期的primary-expression n = string1 :: len(QString s1);
gui.cpp
#include "gui.h"
#include "ui_gui.h"
#include "string1.h"
gui::gui(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::gui) {
ui->setupUi(this); }
gui::~gui() {
delete ui; }
void gui::on_pushButton_clicked() {
QString q1;
string1 *s1;
int n;
q1=ui->lineEdit->text();
s1=new string1(q1);
n=string1::len(QString s1);
ui->lineEdit_2->setText(q1); }
gui.h
#ifndef GUI_H
#define GUI_H
#include <QMainWindow>
#include<string1.h> namespace Ui { class gui; }
class gui : public QMainWindow {
Q_OBJECT
public:
explicit gui(QWidget *parent = 0);
~gui();
private slots:
void on_pushButton_clicked();
private:
Ui::gui *ui; };
#endif // GUI_H
string1.cpp
#include<string1.h>
string1::string1(QString q1) {
q=q1; } string1::string1() {
q=" "; }
int string1::len(QString *s) {
int i=0;
while(s[i]!=0)
{
i++;
}
i--;
return i; }
string1.h
#ifndef STRING1_H
#define STRING1_H
#include<qstring.h>
#include<gui.h>
class string1 {
QString q;
public:
friend class gui;
string1 *s1;
string1();
string1(QString q1);
int len(QString *s);
};
#endif // STRING1_H
答案 0 :(得分:0)
错误是由n=string1::len(QString s1);
引起的,QString s1
是参数列表中string:::len
的声明。您可能从string1.cpp复制了函数声明,将参数名称更改为参数名称,但忘记删除该类型。但由于static
不是s1
,它仍然无法正常工作。
确定您需要动态分配delete
吗?它是本地变量,你在函数结束前忘了string1
。如果您使用动态分配的string1::len
只是为了将其传递给{{1}}以避免复制,请使用Google C ++参考。