Qt5:使用 QCommandLineParser 时出现奇怪的编译错误 class
Qt5: Strange compilation error while using QCommandLineParser class
对于我的应用程序,我必须派生 QtCoreApplication 并使用 QCommandLineParser。我在一个单独的命名空间中声明了 QCommandLineOptions 实例,并且还想在此命名空间中声明解析器。但是我得到一个我不太明白的错误。
namespace
{
QCommandLineParser parser;
const QCommandLineOption optA("optA", "defaultOptA");
parser.addOption(optA); <-- error: unknown type name 'parser'
}
MyApp::MyApp(int argc, char *argv[])
:QCoreApplication(argc, argv)
{
setApplicationName("My App");
}
我也尝试过声明一个 QList<QCommandLineOption>
以便我可以向它添加选项并使用 QCommandLineParser::addOptions
将它添加到解析器中,但这也不起作用。
namespace
{
QList<QCommandLineOption> options;
const QCommandLineOption optA("optA", "defaultOptA");
options << optA; <-- error: unknown type name 'options'
}
MyApp::MyApp(int argc, char *argv[])
:QCoreApplication(argc, argv)
{
setApplicationName("MyApp);
}
两种情况我都做错了什么?
您不能在命名空间声明中使用 parser.addOption(optA)
或 options << optA
等表达式。这只是 C++ 的事情,与 Qt 无关。我建议您将 parser
和 optA
变量放入 MyApp
class 并在 MyApp
构造函数
中初始化它们
class MyApp : public QCoreApplication
{
...
private:
QCommandLineParser parser;
const QCommandLineOption optA;
};
MyApp::MyApp(int argc, char *argv[])
: QCoreApplication(argc, argv), optA("optA", "defaultOptA")
{
parser.addOption(optA);
...
}
对于我的应用程序,我必须派生 QtCoreApplication 并使用 QCommandLineParser。我在一个单独的命名空间中声明了 QCommandLineOptions 实例,并且还想在此命名空间中声明解析器。但是我得到一个我不太明白的错误。
namespace
{
QCommandLineParser parser;
const QCommandLineOption optA("optA", "defaultOptA");
parser.addOption(optA); <-- error: unknown type name 'parser'
}
MyApp::MyApp(int argc, char *argv[])
:QCoreApplication(argc, argv)
{
setApplicationName("My App");
}
我也尝试过声明一个 QList<QCommandLineOption>
以便我可以向它添加选项并使用 QCommandLineParser::addOptions
将它添加到解析器中,但这也不起作用。
namespace
{
QList<QCommandLineOption> options;
const QCommandLineOption optA("optA", "defaultOptA");
options << optA; <-- error: unknown type name 'options'
}
MyApp::MyApp(int argc, char *argv[])
:QCoreApplication(argc, argv)
{
setApplicationName("MyApp);
}
两种情况我都做错了什么?
您不能在命名空间声明中使用 parser.addOption(optA)
或 options << optA
等表达式。这只是 C++ 的事情,与 Qt 无关。我建议您将 parser
和 optA
变量放入 MyApp
class 并在 MyApp
构造函数
class MyApp : public QCoreApplication
{
...
private:
QCommandLineParser parser;
const QCommandLineOption optA;
};
MyApp::MyApp(int argc, char *argv[])
: QCoreApplication(argc, argv), optA("optA", "defaultOptA")
{
parser.addOption(optA);
...
}