【问题标题】:how to create a class so that the vector works std::vector<MyClass<int>> v{ 1,2,3 };如何创建一个类以使向量起作用 std::vector<MyClass<int>> v{ 1,2,3 };
【发布时间】:2020-10-17 12:37:29
【问题描述】:

我需要一门课,这样指令才能工作

int main() {
// create a vector with values 10,2,3
std::vector<MyClass<int>> v{ 10,2,3 };
//print values
for (const auto& m : v) std::cout << m.value() << ",";
return 0;
}

【问题讨论】:

    标签: c++ class templates vector


    【解决方案1】:

    只需编写一个template 类:

    template<typename T>
    class MyClass {
    private:
      T val;
    public:
      MyClass(T a) : val{std::move(a)} {}
      T value() const { return val; }
    };
    

    注意如果你将构造函数标记为explicit:

      explicit MyClass(T a) : val{std::move(a)} {}
    

    那么你将不得不显式地构造向量初始化器列表中的值:

    std::vector<MyClass<int>> v{ MyClass<int>{10}, MyClass<int>{2}, MyClass<int>{3} };
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-21
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 2012-04-01
    • 2022-01-03
    • 2020-03-23
    相关资源
    最近更新 更多