3

我可以有一个方法,它接受与控股类成员同名的参数吗?我试着用这个:

    class Foo {
        public:
            int x, y;
            void set_values(int x, int y)
            {
                x = x;
                y = y;
            };
    };

...但它似乎不起作用。

有什么方法可以访问我正在使用的名称空间的实例,类似于 JavaScriptthis或 Pythonself吗?

4

3 回答 3

14

通过使用成员变量的命名约定来避免这种混淆通常是一个好主意。例如,camelCaseWithUnderScore_ 很常见。这样你最终会得到x_ = x;,大声读出仍然有点有趣,但在屏幕上相当明确。

如果您绝对需要调用相同的变量和参数,那么您可以使用this指针来指定:

class Foo {
    public:
        int x, y;
        void set_values(int x, int y)
        {
            this->x = x;
            this->y = y;
        }
};

顺便说一句,注意类定义后面的分号——这是成功编译所必需的。

于 2009-05-19T21:39:45.860 回答
6

是的,您应该能够使用“this”关键字(它是 C++ 中的指针)来编写它:

class Foo {
    public:
        int x, y;
        void set_values(int x, int y)
        {
            this->x = x;
            this->y = y;
        }
}
于 2009-05-19T21:36:47.723 回答
1

C++当前实例中被const指针引用this

class Foo {
    public:
        int x, y;
        void set_values(int x, int y)
        {
            this->x = x;
            this->y = y;
        };
};
于 2009-05-19T21:37:07.897 回答