s1 之前的预期主令牌
expected primary token before s1
我是qt creator的新手。
gui.cpp
有错误
24: error: expected primary-expression before 's1'
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
错误是由n=string1::len(QString s1);
引起的,它是参数列表中QString s1
的声明。您可能从 string1.cpp 复制了函数声明,将参数名称更改为参数名称,但忘记删除类型。但它仍然无法正常工作,因为 string:::len
不是 static
.
确定需要s1
动态分配吗?它是局部变量,您在函数结束前忘记了 delete
。如果您使用动态分配的 string1
只是为了将其传递给 string1::len
避免复制,google C++ 引用。
我是qt creator的新手。 gui.cpp
有错误24: error: expected primary-expression before 's1' 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
错误是由n=string1::len(QString s1);
引起的,它是参数列表中QString s1
的声明。您可能从 string1.cpp 复制了函数声明,将参数名称更改为参数名称,但忘记删除类型。但它仍然无法正常工作,因为 string:::len
不是 static
.
确定需要s1
动态分配吗?它是局部变量,您在函数结束前忘记了 delete
。如果您使用动态分配的 string1
只是为了将其传递给 string1::len
避免复制,google C++ 引用。