首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

新手疑问,为什么这个类编译时显示成员函数重复定义,该怎么处理

2012-01-22 
新手疑问,为什么这个类编译时显示成员函数重复定义这个类能够编译通过。C/C++ code#ifndef MYMAINWINDOW_H#

新手疑问,为什么这个类编译时显示成员函数重复定义
这个类能够编译通过。

C/C++ code
#ifndef MYMAINWINDOW_H#define MYMAINWINDOW_H#include <QMainWindow>#include <QAction>class MyMainWindow : public QMainWindow{    Q_OBJECTpublic:    MyMainWindow(){createActions();}private:   void createActions(){newAction = new QAction(tr("&New"), this);}   QAction *newAction;};#endif // MAINWINDOW_H

而这个却通不过:
C/C++ code
#ifndef MYMAINWINDOW_H#define MYMAINWINDOW_H#include <QMainWindow>#include <QAction>class MyMainWindow : public QMainWindow{    Q_OBJECTpublic:    MyMainWindow();private:   void createActions();   QAction *newAction;};MyMainWindow::MyMainWindow(){    createActions();}void MyMainWindow::createActions(){    newAction = new QAction(tr("&New"), this);}#endif // MAINWINDOW_H

这两个类都符合C++的语法,为什么第二个通不过编译?

[解决办法]
第二个不符合C++语法!
请在函数实现部分前边加上关键字inline
[解决办法]
MyMainWindow::MyMainWindow()
{
createActions();
}

void MyMainWindow::createActions()
{
newAction = new QAction(tr("&New"), this);
}

你重新建一个cpp文件 把上面的那一段放到cpp文件中 就卜会报错啦..
[解决办法]
探讨

感谢二位的解答。

C++中规定声明和实现一定要放在.h和.cpp文件中吗?
如下代码在VS中能编译通过:
C/C++ code

//ClassA.h
#ifndef CLASSA_H
#define CLASSA_H

class ClassA
{
public:
ClassA();
int getN();

private:
int n;
};

Cla……

热点排行
Bad Request.