2017-10-18 16 views
1

Est-il possible d'initialiser un membre de vecteur avec la liste d'initialisation du constructeur. Je donne quelques codes incorrects ci-dessous.Initialiser un membre de vecteur avec les paramètres du constructeur

#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; 
}; 

La mise en œuvre du constructeur dans le fichier .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() 
{ 

} 

dans le fichier principal

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

Répondre

1

Si vous voulez initialiser les vector membres avec les paramètres transmis à CA::CA comme éléments , vous pouvez utiliser list initialization (depuis C++ 11), pour lequel le constructor of std::vector prenant std::initializer_list sera utilisé pour ini tialisation. par exemple.

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

Merci @songyuanyao – user18441