Прошу прощения, это, наверное, глупый вопрос. Я, очевидно, неправильно понимаю что-то фундаментальное в отношении объектно-ориентированного программирования. Я привык к C, и теперь я пытаюсь использовать C++.C++ объект со своим методом?
У меня есть несколько кнопок в классе под названием Button. Каждая кнопка делает что-то другое. То, что я хочу писать что-то вроде этого:
Button button1;
Button button2;
...
void button1::onClick() {
...
}
void button2::onClick() {
...
}
Но это не работает («кнопка 1 не является классом, имен или перечисление» - да, я знаю!). Я знаю, что я мог бы просто сделать отдельный класс для каждой кнопки:
class button1_class : public Button {
public:
void onclick() {
...
}
} button1;
class button2_class : public Button {
...
}
Но мне это кажется "неправильным сделать класс, когда я знаю, что он будет иметь только один элемент.
Я использую AGUI, библиотека GUI для Allegro 5.
EDIT
Спасибо за ответы. Хотя они все полезны и (я думаю) все действительные ответы, никто на самом деле не сказал «нет, у вас нет объекта с его собственным уникальным методом, потому что ...»
Так, например, если object1 имеет тип ObjectClass то объекту 1 не разрешается иметь метод (функция-член), который является уникальным для object1, но скорее имеет только методы, которые определены как часть ObjectClass. Это правильно? Прошу прощения, я не включил свой фактический прецедент. Я был более заинтересован в том, чтобы просто окунуться в ООП, чтобы я мог сделать это самостоятельно самостоятельно.
EDIT2 Глядя на ответы более подробно, я полагаю, что это возможно с лямбда-выражениями, это просто не так, как я себе представлял. Еще раз спасибо
множество подобных классов, каждый из которых имеет только одну функцию-член того же самого имени , но другая функциональность для других не кажется хорошим дизайном. – Walter
В чем вопрос? – Walter