2016-11-04 3 views
-8

クラス宣言の外にparameters-initializeリストを持つクラスコンストラクタの定義を入れられないのはなぜですか?C++、クラス定義の外にparameters-initializeリストを持つクラスコンストラクタの定義を入れられないのですが

typedef unsigned int UINT; 

class num_sequence { 
public: 
    typedef vector<UINT>::iterator iterator; 

    //I cannot put this following part in the cpp file 
    num_sequence(vector<UINT> & ele,int len=0,int beg=0):_relems(ele),_length(len),_beg_pos(beg) 
    { 
     //an abstract class cannot be instanlized 
     cout<<"build a num_sequence object"; 
    }  
    virtual ~num_sequence(); 
+0

num_sequence :: num_sequence(ベクター&ELE、INT LEN = 0、INT BEG = 0):_ relems(ELE )、_ length(len)、_ beg_pos(beg) \t \t { \t \t \t //抽象クラスは初期化できません \t \t \t cout << "build a num_sequence object"; } –

+0

クラス宣言のスコープ内にコンストラクタを実装できますが、エラーが発生するのは –

+3

です。外側に置くことができます。あなたが問題を抱えている場合は、試した実際のコードを投稿すると動作しません。 –

答えて

1

num_sequence.h

#include <vector> 

typedef unsigned int UINT; 

class num_sequence 
{ 
public: 
    typedef std::vector<UINT>::iterator iterator; 

    num_sequence(std::vector<UINT> & ele, int len = 0, int beg = 0); 
    virtual ~num_sequence(); 

private: 
    std::vector<UINT> &_relems; 
    int _length; 
    int _beg_pos; 
}; 

num_sequence.cpp

#include "num_sequence.h" 
#include <iostream> 

num_sequence::num_sequence(std::vector<UINT> & ele, int len, int beg) 
    : _relems(ele), _length(len), _beg_pos(beg) 
{ 
    std::cout << "build a num_sequence object"; 
}  

num_sequence::~num_sequence() 
{ 
} 
関連する問題