2014-12-10 151 views
-2

我在第19-23行解決C:2059錯誤時遇到問題。我確信我創建的矢量數據類型是正確的。我哪裏錯了?C2059:語法錯誤:常量

調試器輸出: C:\ Qt的\工具\ QtCreator \ BIN \ Neutropenia_Application \ classifier.h:21:錯誤:C2059:語法錯誤: '常量'

#ifndef CLASSIFIER_H 
#define CLASSIFIER_H 

#include "patient_data.h" 
#include <QObject> 
#include <vector> 
#include <stdlib.h> 

class Classifier : public QObject 
{ 
    Q_OBJECT 
public: 
    explicit Classifier(QObject *parent = 0); 
    ~Classifier(); 
    void classify(std::vector<patient_data>data, patient_data i); 

    struct CreateSDTable 
    { 
     std::vector<long> sum(3); // C2509 error //element 0 = Tumor, element 1 = Stage, element 2 = Adjuvant 
     std::vector<long> mean(3);  // C2509 error 
     std::vector<long> error(3); // C2509 error 
     std::vector<long> SDL(3); // C2509 error 
     std::vector<long> SD(3); // C2509 error 
    }; 

    CreateSDTable CurrentvsNeutropenic; 
    CreateSDTable CurrentvsNonNeutropenic; 

private: 
/* 
    std::vector<int> calculatesums(std::vector<patient_data> data, patient_data i); 
    std::vector<long> calculatemean(std::vector<int>validpatients, CreateSDTable Neut, CreateSDTable NonNeut); 
    std::vector<long>calculateerror(patient_data d, std::vector<int>m); 
    std::vector<long>calculatSDL(int nvp, CreateSDTable CVN, CreateSDTable CVsNN); 
    std::vector<int> NumofValidPatients(std::vector<patient_data>x); 

    //void classify(std::vector<patient_data>data, patient_data i); 
*/ 
signals: 

public slots: 

}; 

#endif // CLASSIFIER_H 

回答

0

無法初始化成員這種方式的變量。你需要單獨聲明和初始化:

struct CreateSDTable { 
    std::vector<int> sum; 
    ... 
    CreateSDTable() : sum(3), ... {} 
}; 
+3

*您可以在* C++ 11的小的調整'的std ::矢量總和=標準::矢量(3);' – user657267 2014-12-10 23:56:39

+0

謝謝傑伊·米勒,謝謝user657267,我不會猜到的。 – user3255175 2014-12-11 00:02:25

+0

C++ 11中的另一種方法是'std :: vector sum {0,0,0};'(這些數字是每個成員的初始值,列表的長度給出了該向量的大小) – 2014-12-11 01:07:27