小编cor*_*izz的帖子

C++是一个有自己方法的对象?

对不起,这可能是一个愚蠢的问题.我显然误解了面向对象编程的基本原理.我习惯了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表达式是可能的,它只是不像我想象的那样.再次感谢

c++ oop

2
推荐指数
1
解决办法
203
查看次数

使用 JavaScript 获取 UTF-8 URL 参数

我正在尝试获取一个文本输入字段,其值作为在 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 功能。

javascript utf-8

1
推荐指数
1
解决办法
7316
查看次数

标签 统计

c++ ×1

javascript ×1

oop ×1

utf-8 ×1