c++ - 如何创建一个类,使 vector 起作用std::vector <MyClass <int >> v {1,2,3};

标签 c++ class templates vector

我需要一个类,以便指导工作

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

最佳答案

只需编写一个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)} {}
然后,您将必须在 vector 初始值设定项列表中显式构造值:
std::vector<MyClass<int>> v{ MyClass<int>{10}, MyClass<int>{2}, MyClass<int>{3} };

关于c++ - 如何创建一个类,使 vector 起作用std::vector <MyClass <int >> v {1,2,3};,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62602714/

相关文章:

c++ - 函数类型参数的模板参数推导

c++ - std::auto_ptr 在我的模板类中编译但不是 std::unique_ptr

c++ - 覆盖继承的函数

c++ - 使用 qmake 查找编译器供应商/版本

java - 在java中创建可扩展枚举行为的最佳方法

C++ 错误 : 'No suitable conversion from [class name] to "int"'

c++ - 双重分派(dispatch)和模板类

android - Android 设备上是否可以使用原生 C++ WiFi P2P 网络?

C++ : why bool is 8 bits long?

class - VBA 隐藏用户表单但保留输入的数据