Здравствуйте, smeeld, Вы писали:
BFE>>Ну не все могут в C++. Это сложный язык, он не для всех. Вот кто не осилил, те и переписывает. Если вам подсунут язык, которого вы не знаете, то вы тоже перепишите. Люди не знают С++, вот и переписывают.
S>Да, как бы, наоборот. Все вокруг исключительно C++-ники. Один другого матёрее. Сидят в корпоративных чатах и соревнуются в пересказывании наизусть стандарта. Без шуток. В РФ вообще C++-ников как грязи. Вполне себе на уровне. Решение переписывать на другие ЯП спускают сверху архитекторы, в подавляющем большинстве случаев. Невозможно? Неизбежно.
Одно дело пересказывать правила стандарта, а другое дело уметь читать код.
Многие смогут прочитать и понять, например, это?:
#include <algorithm>
#include <functional>
#include <list>
class Button {
public:
typedef void (*OnPress)(Button *, void *closure);
private:
typedef std::pair<OnPress, void*> PressCallBack;
std::list<PressCallBack> onPress;
struct Notify:
public std::binary_function<PressCallBack, Button*, void> {
void operator()( PressCallBack& c, Button* b) const {
(*c.first)(b, c.second);
}
};
void NotifyAll(void){
std::for_each(
onPress.begin(), onPress.end(),
std::bind2nd(Notify(), this)
);
}
public:
void AddOnButtonPress(OnPress f, void *c){
onPress.push_back(PressCallBack(f,c));
}
void RemoveOnButtonPress(OnPress f, void *c){
onPress.remove(PressCallBack(f,c));
}
};
А что насчёт других языков — я не знаю, я сейчас переписываю код с C# на C++.