2015-11-02 59 views
1

我目前正在尝试添加滑块以在OpenGl/QT/C++中的不同轴上移动,但在编译时会收到模糊的对'main''错误的未定义引用。这是我的主类...为轴添加滑块时未定义的主引用

我的头文件:

#include "MyWidget.h" 
#ifndef MYMAIN_H 
#define MYMAIN_H 

class MyMain: public QObject{ 

    public: 
    MyMain(); 
    int main(int argc, char *argv[]); 
    MyWidget *MyWidget; 

    public slots: 
    void setXTranslation(int value); 
}; 

#endif 

我的源文件:

#include "MyMain.h" 

MyMain::MyMain() 
{ 
} 

int MyMain::main(int argc, char *argv[]) { 

    some code here... 


    QSlider *xSlider = new QSlider(Qt::Vertical); 
    xSlider->setRange(0, 10); 

    QObject::connect(xSlider, SIGNAL(valueChanged(int)), 
       this, SLOT(setXTranslation(int))); 


    some more code here.... 

    // start it running 
    return app.exec(); 
} 
void MyMain::setXTranslation(int value) 
{ 
    some more code here.... 
} 

回答

1

程序应包含一个称为main的全局函数。

你可以实现你的主要功能如下:

int main(int argc, char* argv[]) { 
    return MyMain().main(argc, argv); 
} 
+0

这使得它编译感谢:) – Jade

1
int MyMain::main(int argc, char *argv[]) { 
    ^^^^^^^^ 

删除。

main函数需要位于全局范围内,而不是MyMain

+0

如果我想通过信号和槽来调用主setXTranslation()不会在头文件,虽然被定义主要需要? – Jade

1

C++语言期望main()函数在全局范围内(尽管它不是关键字)并将其识别为程序的入口点。

如果main()在您的案例中被定义为MyMain::main(),那么编译器不会将其视为/识别为入口点。

已回答同类问题here