Java => C++ code

263
08 марта 2018, 10:47

Как можно реализовать на 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;
}
Answer 1
#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
READ ALSO
TreeMap не правильно сортирует

TreeMap не правильно сортирует

TreeMap не правильно сортирует

284
doDelete и doPut в Servlet

doDelete и doPut в Servlet

Подскажите как сервлет определяет что пришел именно DoDelete запрос, если в форме можно указать только GET/POST методы? Напрммер если я заполнил...

255
Не работает плавно slideToggle

Не работает плавно slideToggle

Доброго времени суток, такая ситуация, slideToggle не делает плавное открытие элементов, просто "вставляет" скрытый элементОтчасти помогла hide()...

263