2012-06-13 89 views
0

Qt的類型我有我的頭下面的代碼:C++默認值在構造

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:〜/開發/帶狀圖$使

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 

回答

1

你傳入..., float_t&, uint32_t&)..., float_t, float_t, uint32_t預期。你只是缺少一個浮點值。

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