小编Cha*_*ed0的帖子

Javascript:我是否需要为对象中的每个变量放置this.var?

在C++中,我最熟悉的语言,通常是一个声明这样的对象:

class foo
{
public:
    int bar;
    int getBar() { return bar; }
}
Run Code Online (Sandbox Code Playgroud)

调用getBar()工作正常(忽略bar可能未初始化的事实).内部的变量bargetBar()类的范围内foo,所以我不需要说,this->bar除非我真的需要说清楚我指的是' bar而不是比如参数.

现在,我正试图在Javascript中开始使用OOP.所以,我查找如何定义类并尝试相同的事情:

function foo()
{
     this.bar = 0;
     this.getBar = function() { return bar; }
}
Run Code Online (Sandbox Code Playgroud)

它给了我bar is undefined.更改barthis.bar解决问题,但为每个变量执行此操作会使我的代码变得非常混乱.这对每个变量都是必要的吗?由于我找不到与此有关的任何问题,这让我觉得我做的事情从根本上是错误的.


编辑:是的,所以,从评论我得到的是,this.bar一个对象的属性,引用不同于bar局部变量的东西.有人可以说,为什么这就是范围和对象,以及是否有另一种方法来定义一个没有必要的对象?

javascript scope this

35
推荐指数
2
解决办法
7800
查看次数

将指向成员函数的指针作为指向函数的指针传递

所以情况就是这样:我正在使用C++,SDL和GLConsole.我有一个类SDLGame,它有Init(),Loop(),Render()等-实际上,它适用于我的比赛类的逻辑.
到目前为止,GLConsole是一个不错的库 - 它允许我定义CVars等,甚至在我的SDL类中.但是,在定义命令时,我必须指定一个ConsoleFunctypedef为的命令

typedef bool (*ConsoleFunc)( std::vector<std::string> *args);
Run Code Online (Sandbox Code Playgroud)

很简单.但是,就像我说的,我的函数都在我的类中,我知道我不能将指向类的函数作为指针到函数的参数传递.我不能定义静态函数或在我的类之外创建函数,因为其中一些ConsoleFunc必须访问类数据成员才有用.我想保留OOP,因为 - 好吧,OOP很好.

好吧,我实际上已经解决了这个问题 - 但它非常难看.我只有一个SDLGame声明为extern变量的实例,并在我的ConsoleFuncs/main类中使用它.

所以,问题是:有没有办法做到这一点,就像我这样做一样不愚蠢和愚蠢?(或者:是否有像GLConsole这样支持SDL的控制台库,可以做我正在描述的内容?)

c++ sdl callback

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

为什么我可以使用不存在的typedef?

以下小程序在gcc上编译并运行正常:

#include <stdio.h>
#include <stdlib.h>

typedef struct foo dne;

int main(int argc, char *argv[]) {
    dne *dne_var = malloc(sizeof(void*));
    printf("%p\n", dne_var);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

为什么typedef有效?

c

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

标签 统计

c ×1

c++ ×1

callback ×1

javascript ×1

scope ×1

sdl ×1

this ×1