私はクラスを持っていますKeywords
:
#include <boost/lambda/lambda.hpp>
class Keywords
{
public:
///Constructor
Keywords(const char*,vector<shared_ptr<RegularExpression>>,vector<string>);
Keywords(const Keywords& other);
private:
const char * xmlFile;
vector<shared_ptr<RegularExpression>> vreg;
vector<string> sw;
}
const char*
そして、とのコピーコンストラクターを構築したいvector<shared_ptr<RegularExpression>>
正しくコーディングしていますか?
Keywords::Keywords(const Keywords& other):xmlFile(new char[100]),vreg(other.vreg.size())
{
strcpy((char*)xmlFile, (char*)other.xmlFile);
for (std::size_t i = 0; i < other.vreg.size(); ++i)
vreg[i] = shared_ptr<RegularExpression>(new RegularExpression(*other.vreg[i]));
}
私が理解していることから、Const char* と shared_ptr のベクトルのコピーを作成します。
ありがとうございました。
*したがって、const char を削除した後 *
class Keywords
{
public:
///Constructor
Keywords(string,vector<shared_ptr<RegularExpression>>,vector<string>);
Keywords(const Keywords& other);
private:
string xmlFile;
vector<shared_ptr<RegularExpression>> vreg;
vector<string> sw;
}
コピー コンストラクターは次のようになります。
Keywords::Keywords(const Keywords& other):vreg(other.vreg.size()),sw(other.sw)
{
for (std::size_t i = 0; i < other.vreg.size(); ++i)
vreg[i] = shared_ptr<RegularExpression>(new RegularExpression(*other.vreg[i]));
}
記述子:
Keywords::~Keywords()
{
sw.clear();
vreg.erase(vreg.begin());
}