2017-10-18 4 views
1

コンストラクタの初期化リストを使用してベクトルメンバを初期化することは可能ですか?私は以下のいくつかの間違ったコードを与える。コンストラクタのパラメータでベクトルメンバを初期化する

#ifndef _CLASSA_H_ 
#define _CLASSA_H_ 

#include <iostream> 
#include <vector> 
#include <string> 

class CA{ 
public: 
    CA(); 
    ~CA(); 

private: 
    std::vector<int> mCount; 
    std::vector<string> mTitle; 
}; 

あなたが要素としてCA::CAに渡されたパラメータを持つvectorメンバーを初期化したい場合は、メインファイル

#include "classa.h" 
int main() 
{ 
    CA A1(25, "abcd"); 
    return 0; 
} 

答えて

1

で.cppファイル

// I want to do it this way 
#pragma once 

#include "classa.h" 


// Constructor 
CA::CA(int pCount, std::string pTitle) :mCount(pCount), mTitle(pTitle) 
{ 

} 


// Destructor 
CA::~CA() 
{ 

} 

でのコンストラクタの実装list initialization(C++ 11以降)を使用できます。constructor of std::vectorstd::initializer_list、ini初期化。例えば

CA::CA(int pCount, std::string pTitle) :mCount{pCount}, mTitle{pTitle} 
//           ~  ~  ~  ~ 
{ 
    // now mCount contains 1 element with value 25, 
    //  mTitle consains 1 element with value "abcd" 
} 
+0

ありがとう@songyuanyao – user18441

関連する問題