Реально ли в плюсах создать анонимный класс через new?

233
17 октября 2017, 03:12
#define ClassDef class {}
typedef ClassDef MyClass;
int main() {
    ClassDef class0;
    MyClass* class1 = new MyClass;
    MyClass* class2 = new ClassDef; // error: types may not be defined in a new-type-id
}

Так же интересно, возможно ли как в джаве создать анонимный наследованный класс и сразу определить в нем методы Вместо этого:

class Something { public: virtual void run() = 0; };
void run(Something* s) { s->run(); }
int main() {
    class : public Something { void run() {} } MyClass;
    run(&MyClass);
}

Сделать как-то так:

class Something { public: virtual void run() = 0; };
void run(Something* s) { s->run(); }
int main() {
    run(new class : public Something { void run() {} });
}
Answer 1

Может вас заинтересуют лямды?

class Manager {
    typedef std::function<void()> Runner;
    void add(const Runner& runner) {
        runners.push_back(runner);
    }
    void execute() {
        for (r : runners) {
           r();
        }
    }
    std::list<Runner> runners;
};
int main(...) {
    ...
    Manager mgr;
    ...
    mgr.add([]() { /* do something */})
    ...
    SomeVar someVar;
    ...
    mgr.add([someVar]() { int a = 5; int b = 6; someVar.callSomething(a+b); })
}
READ ALSO
jQuery Не работает $(this).css()

jQuery Не работает $(this).css()

Подскажите пожалуйста почему не работает?

301
JQuery - Как сделать, чтобы mmenu выезжало сверху над контентом, а контент не сдвигался?

JQuery - Как сделать, чтобы mmenu выезжало сверху над контентом, а контент не сдвигался?

Как сделать так, чтобы mmenu выезжало сверху над контентом, а контент оставался бы на месте, то есть не сдвигался?

240
Как сделать подобный border?

Как сделать подобный border?

Всем приветНашел сайт с красивым бордером, но не понимаю, как его сделать

190
Плавное обтекание svg

Плавное обтекание svg

Есть вот такая свгшка, как сделать так чтобы, допустим при клике давался класс на свг и она плавно обтекала сверху слоем, который сейчас просто...

250