我想知道如何使用自定义构造函数创建类对象的向量,尽管我遇到了 std::vector.push_back() 的问题,我应该如何使用其构造函数在向量中创建一个新元素?
代码:
class sampleClass{
private:
std::string cID;
int cNum;
public:
sampleClass(std::string inputID, int inputNum){
cID = inputID;
cNum = inputNum;
}
}
int main(){
std::vector<sampleClass> vSC;
vSC.push_back("id1", 1);
vSC.push_back("id2", 2);
}
提前致谢!
您可以使用 emplace_back,也不要在构造函数主体中初始化成员,而是使用正确的初始化语法:
#include <vector>
#include <string>
#include <iostream>
class sampleClass
{
public:
sampleClass(const std::string& inputID, int inputNum) :
cID{ inputID },
cNum{ inputNum }
{
// do not initialize members in the body of your constructor
}
const std::string& ID() const noexcept
{
return cID;
}
int Num() const noexcept
{
return cNum;
}
private:
std::string cID;
int cNum;
};
int main()
{
std::vector<sampleClass> vSC;
vSC.emplace_back("id1", 1);
vSC.emplace_back("id2", 2);
// range based for loop
for (const auto& sample : vSC)
{
std::cout << sample.Num() << ", " << sample.ID() << "\n";
}
return 0;
}