我目前正在尝试添加滑块以在OpenGl / QT / C ++中的不同轴上移动,但对“主要''”进行了模糊的“未定义”引用。编译时出错。这是我的主要班级......
我的标题文件:
#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....
}
答案 0 :(得分:1)
int MyMain::main(int argc, char *argv[]) {
^^^^^^^^
删除此内容。
main
函数需要位于全局范围内,而不是MyMain
。
答案 1 :(得分:1)
C ++语言期望main()
函数在全局范围内(尽管它不是关键字)并将其识别为程序的入口点。
如果在您的案例中main()
在类中定义为MyMain::main()
,则编译器不会将其视为/识别为入口点。
已回答类似问题here。
答案 2 :(得分:1)
程序应包含一个名为main的全局函数。
您可以像这样实现主要功能:
int main(int argc, char* argv[]) {
return MyMain().main(argc, argv);
}