Как можно реализовать на c++ данный код на Java:
public abstract class Result {
public static final class Test extends Result {
public final int val;
public Test(int val) {
this.val = val;
}
//...
}
}
И последующую обработку значения (switch как понимаю нельзя)
UPD Вот чего я хочу добиться:
class ExecutionResult {
public:
class Sleep: public ExecutionResult {
public:
unsigned int ticks;
Sleep(unsigned int ticks_) {
ticks = ticks_;
};
};
class Error: public ExecutionResult {
public:
std::string message;
Error(std::string message_) {
message = message_;
};
};
};
ExecutionResult* test() {
return new ExecutionResult::Error("test");
}
ExecutionResult* res = test()
switch(res) {
case //sleep
handleSleep(res->ticks);
break;
case //error
handleError(res->message);
break;
}
#include <iostream>
class IResult{
public:
enum class Type:unsigned char{
Sleep = 0,
Error = 1
};
virtual ~IResult(){}
virtual Type getType() const = 0;
};
class SleepResult: public IResult{
public:
Type getType() const override{
return Type::Sleep;
}
virtual ~SleepResult(){}
int ticks() const{
return 5;
}
};
class ErrorResult: public IResult{
public:
Type getType() const override{
return Type::Error;
}
virtual ~ErrorResult(){}
std::string message() const{
return "Error !!!";
}
};
IResult* test1(){
return new ErrorResult();
}
IResult* test2(){
return new SleepResult();
}
void handle(IResult* res){
if (res == nullptr){
return;
}
switch (res->getType()) {
case IResult::Type::Error:
{
ErrorResult* err = dynamic_cast<ErrorResult*>(res);
if (err){
std::cout << err->message() << std::endl;
}
}
break;
case IResult::Type::Sleep:
{
SleepResult* sl = dynamic_cast<SleepResult*>(res);
if (sl){
std::cout << "Sleep for " << sl->ticks() << std::endl;
}
}
break;
default:
break;
}
}
int main(){
IResult* res = test1();
handle(res);
delete res;
res = test2();
handle(res);
delete res;
return 0;
}
Вывод:
Error !!!
Sleep for 5
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите как сервлет определяет что пришел именно DoDelete запрос, если в форме можно указать только GET/POST методы? Напрммер если я заполнил...
Доброго времени суток, такая ситуация, slideToggle не делает плавное открытие элементов, просто "вставляет" скрытый элементОтчасти помогла hide()...