簡體   English   中英

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在 go 上添加解析器,但這也不起作用。

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++ 的事情,與 ZE8801102A40AD89DDCFDCAEBF008D25Z 無關。 我建議您寧願將parseroptA變量放在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);
    
    ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM