2015-11-02 56 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