簡體   English   中英

構造函數中Qt類型的C ++默認值

[英]C++ Default Values for Qt Types in Constructor

我的標頭中包含以下代碼:

StripChartConfiguration(
    uint32_t tmpStripChartFrameworkWidgetWidth,
    uint32_t tmpStripChartFrameworkWidgetHeight,
    QString tmpMissionName,
    QList<QString> tmpCommandandToneNameQList,
    QList<QString> mToneNameQList,
    FTSProtocolType tmpMissionProtocol,
    float_t mStripHeightInPixels,
    float_t tmpTimeSliceWidth,
    uint32_t tmpTimeframeInSecondsPerStrip,
    QColor tmpStripChartGLViewportBackgroundColor
        = QColor(Qt::lightGray),
    QColor tmpDefaultStateSliceColor 
        = QColor(Qt::lightGray),
    QColor tmpCommandedStateSliceColor
        = QColor(Qt::darkBlue),
    QColor tmpRequestedStateSliceColor
        = QColor(Qt::darkMagenta),
    QColor tmpRequestedConfirmedStateSliceColor
        = QColor(Qt::darkGreen),
    QColor tmpConfirmedDefaultStateSliceColor
        = QColor(Qt::darkYellow),       
    QColor tmpSuspendedDefaultStateSliceColor
        = QColor(0x82B384), //Stale Green
    QColor tmpCarrierDefaultStateSliceColor
        = QColor(Qt::lightGray),
    QColor tmpCarrierCommandedStateSliceColor
        = QColor(Qt::blue),
    QColor tmpCarrierRequestedStateSliceColor
        = QColor(Qt::magenta),
    QColor tmpCarrierRequestedConfirmedStateSliceColor
        = QColor(Qt::green),
    QColor tmpCarrierConfirmedDefaultStateSliceColor
        = QColor(Qt::yellow),
    QColor tmpCarrierSuspendedDefaultStateSliceColor
        = QColor(0x82B384)); //Stale Green

現在,我想實例化這種類型的對象,而不必指定顏色。 因此,從我的驅動程序中,我可以:

uint32_t mFWWidth = 800;
uint32_t mFWHeight = 600;
QString mMissionName("This Is A Mission");
QList<QString> mCommandNameList;
for (uint32_t i = 0; i < 10; ++i) {
    mCommandNameList.push_back(QString("Command"));
}
QList<QString> mToneNameList;
for (uint32_t i = 0; i < 6; ++i) {
    mToneNameList.push_back(QString("Tone"));
}
StripChartConfiguration::FTSProtocolType mSCCFTSProtocol =   
    StripChartConfiguration::Irig;
float_t mStripHeightInPixels = 10;
float_t mTimeSliceWidthInPixels = 10;
uint32_t mTimeframeInSecondsPerStrip = 15;
/*
 * End of list of configuration for strip chart
 */
StripChartConfiguration mSCCC(mFWWidth, mFWHeight,        
    mMissionName, mCommandNameList, mToneNameList,
    mSCCFTSProtocol, mStripHeightInPixels, 
    mTimeframeInSecondsPerStrip);

但是g ++抱怨我缺少參數。 我想念什么?

mehoggan @ mehoggan:〜/ Dev / StripChart $ make

g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I/opt/QtSDK/Desktop/Qt/474/gcc/mkspecs/default -I. -I/opt/QtSDK/Desktop/Qt/474/gcc/include/QtCore -I/opt/QtSDK/Desktop/Qt/474/gcc/include/QtGui -I/opt/QtSDK/Desktop/Qt/474/gcc/include/QtOpenGL -I/opt/QtSDK/Desktop/Qt/474/gcc/include -I/usr/X11R6/include -I. -o main.o main.cpp
main.cpp: In function ‘int main(int, char**)’:
main.cpp:39:36: error: no matching function for call to ‘StripChartConfiguration::StripChartConfiguration(uint32_t&, uint32_t&, QString&, QList<QString>&, QList<QString>&, StripChartConfiguration::FTSProtocolType&, float_t&, uint32_t&)’
main.cpp:39:36: note: candidates are:
stripchartconfiguration.h:84:5: note: StripChartConfiguration::StripChartConfiguration(const StripChartConfiguration&)
stripchartconfiguration.h:84:5: note:   candidate expects 1 argument, 8 provided
stripchartconfiguration.h:47:5: note: StripChartConfiguration::StripChartConfiguration(uint32_t, uint32_t, QString, QList<QString>, QList<QString>, StripChartConfiguration::FTSProtocolType, float_t, float_t, uint32_t, QColor, QColor, QColor, QColor, QColor, QColor, QColor, QColor, QColor, QColor, QColor, QColor, QColor)
stripchartconfiguration.h:47:5: note:   candidate expects 22 arguments, 8 provided
main.cpp:31:13: warning: unused variable ‘mTimeSliceWidthInPixels’ [-Wunused-variable]
make: *** [main.o] Error 1

您正在傳遞..., float_t&, uint32_t&)..., float_t, float_t, uint32_t 您只是缺少一個浮點值。

請注意,您的代碼樣式看起來很糟糕。 您不應該創建帶有太多參數的構造函數和方法。 很容易錯過其中之一。 顯然已經發生了。 分別分配每個字段將更加清晰和安全。

暫無
暫無

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

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