我正在尝试实现一个类,该类是由相同抽象基类的不同实现方式构成的。这是一个最小的示例:
struct Base {
virtual ~Base() {}
virtual void something() const = 0;
}
Run Code Online (Sandbox Code Playgroud)
从该基础派生出两个类(Derived1和Derived2):
class Derived1 : public Base {
public:
void something() const override {
std::cout << "derived 1" << std::endl;
}
};
class Derived2 : public Base {
public:
void something() const override {
std::cout << "derived 2" << std::endl;
}
};
Run Code Online (Sandbox Code Playgroud)
我想要做的是通过构造函数将这些类的实例传递给另一个类(集合)。我试图使用std :: initializer_list实现此目的:
class Collection {
public:
Collection(std::initializer_list<Base> args) {
for(auto& arg: args) {
arg.something();
}
}
};
Run Code Online (Sandbox Code Playgroud)
当我尝试像这样调用该构造函数时
Derived1 d1;
Derived2 d2;
Collection col({d1, …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 ISO 8601 日期解析为 Date 对象,但我不能。
我正在尝试以下操作:
String date = "2021-05-14T09:26:20";
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss");
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss");
Date newDate = parser.parse(date);
System.out.println(format.format(newDate));
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
Exception in thread "main" java.text.ParseException: Unparseable date: "2021-05-14T09:26:20"
at java.text.DateFormat.parse(DateFormat.java:366)
at com.pruebas.pruebas.fechas.main(fechas.java:14)
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?