类对象的向量

问题描述 投票:0回答:1

我想知道如何使用自定义构造函数创建类对象的向量,尽管我遇到了 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);
}

提前致谢!

c++ class oop constructor stdvector
1个回答
0
投票

您可以使用 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;
}
© www.soinside.com 2019 - 2024. All rights reserved.