C++ g++;错误:应为(‘;)’;在‘之前*’;代币
我有这段代码。我尝试的是将C++ g++;错误:应为(‘;)’;在‘之前*’;代币,c++,linux,qt,qt4,C++,Linux,Qt,Qt4,我有这段代码。我尝试的是将qgraphicscene子类化,以重新实现其keyPressEvent()方法。顺便说一句,我不得不为这件事选择这个特殊的实现(尤其是typedef部分),以解决与代码其他部分兼容的问题 keypress.h #include <QWidget> #include <QGraphicsScene> #include <QGraphicsView> class Canvas; typedef struct{ int id;
qgraphicscene
子类化,以重新实现其keyPressEvent()
方法。顺便说一句,我不得不为这件事选择这个特殊的实现(尤其是typedef
部分),以解决与代码其他部分兼容的问题
keypress.h
#include <QWidget>
#include <QGraphicsScene>
#include <QGraphicsView>
class Canvas;
typedef struct{
int id;
int pid;
Canvas *qgc;
}scene;
class Canvas: public QGraphicsScene {
private:
scene *gc;
public:
Canvas(Scene* gc, QWidget *parent=0);
protected:
void keyPressEvent(QKeyEvent *e);
};
我的代码有什么问题?您的typedef显示的是
scene
,但您在几个地方使用了scene
。这是有意的吗?注意C++中的标识符是敏感的,根据您的错误信息,KEPress .H至少包含29行。您发布的keypress.h仅包含24行代码>,s未初始化。然后,将场景和场景混合。纠正这一点,如前所述,给我们完整的按键。
#include <QApplication>
#include <QKeyEvent>
#include "keypress.h"
Canvas::Canvas( Scene* gc, QWidget *parent)
: QGraphicsScene(parent)
{
this->gc=gc;
}
void Canvas::keyPressEvent(QKeyEvent *event)
{
if (event->key() == Qt::Key_Escape) {
qApp->quit();
}
}
#include <QApplication>
#include "keypress.h"
#include <QGraphicsView>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Scene *s;
Canvas *canvas=new Canvas(s);
canvas->addText("Hello");
QGraphicsView view(canvas);
view.show();
return app.exec();
}
In file included from keypress.cpp:4:
keypress.h:29: error: expected ‘)’ before ‘*’ token
keypress.cpp:6: error: expected ‘)’ before ‘*’ token
make: *** [keypress.o] Error 1