对不起,这可能是一个愚蠢的问题.我显然误解了面向对象编程的基本原理.我习惯了C,现在正在尝试使用C++.
我在一个名为Button的类中有一些按钮.每个按钮都有不同的功能.我想要写的是这样的:
Button button1;
Button button2;
...
void button1::onClick () {
...
}
void button2::onClick () {
...
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用("按钮1不是类,命名空间或枚举" - 是的,我知道!).我知道我可以为每个按钮创建一个单独的类:
class button1_class : public Button {
public:
void onclick () {
...
}
} button1;
class button2_class : public Button {
...
}
Run Code Online (Sandbox Code Playgroud)
但对我来说,当我知道它只会有一个成员时,上课是"错误的".
我正在使用Agui,Allegro 5的GUI库.
编辑
谢谢你的回复.虽然它们都是有用的(我认为)所有有效的答案,但是没有人真正说过"没有你不能用自己独特的方法拥有一个对象,因为......"
因此,例如,如果object1的类型为ObjectClass,则不允许object1具有object1唯一的方法(成员函数),而是仅拥有作为ObjectClass的一部分定义的方法.是对的吗?对不起,我没有包括我的实际用例.我更感兴趣的是只是让我的头围绕OOP,这样我就可以自己正确地做到这一点.
EDIT2更详细地查看响应,我认为使用lambda表达式是可能的,它只是不像我想象的那样.再次感谢
我正在尝试获取一个文本输入字段,其值作为在 JavaScript 中执行的 XSL 转换的参数发送。我已经使用 get 方法设置了一个表单,我的脚本获取 URL 参数如下:
var word=unescape((''+self.location.search).substring(5)).toLowerCase();
Run Code Online (Sandbox Code Playgroud)
这工作正常,除非输入包含特殊字符。我已将 HTML 页面的编码设置为 UTF-8,并添加了
accept-charset="utf-8"
Run Code Online (Sandbox Code Playgroud)
到表格。我还在脚本标签中指定了 charset="utf-8" ,但它仍然不起作用。我的浏览器 (Firefox) 设置为 UTF-8 作为默认编码。我也尝试删除 unescape 功能。