【发布时间】:2016-12-08 04:52:30
【问题描述】:
我正在根据this 的答案在 C 中尝试 OOP。我遇到了一些我无法解决的问题。举个例子:
struct foo {
int val;
int (*bar)(struct foo, int);
}
int foo_bar(struct foo mod, int val)
{
mod.val = val;
}
int main(void)
{
struct foo foo;
foo.bar = foo_bar;
foo.bar(foo, 8);
}
我认为如果有办法在 C 语言中使用 this 关键字会更简单明了:
struct foo {
int val;
int (*bar)(struct foo, int);
}
int foo_bar(int val)
{
this.val = val;
}
int main(void)
{
struct foo foo;
foo.bar = foo_bar;
foo.bar(8);
}
这听起来不可能,但可能有一些解决方法,有点像 C 本身中的 OOP。有没有什么方法可以实现面向对象C中this关键字的功能?
【问题讨论】:
-
C++ 中的每个对象都可以通过一个称为“this”指针的重要指针访问自己的地址。 “this”指针作为隐藏参数传递给所有非静态成员函数调用。我认为没有必要改变 c 的行为,因为 c 是 c++ 的基础,如果你改变 c 的行为,那么你如何在这两种语言中有所作为。
-
如果您需要使用它,为什么不直接使用 C++? @SumitGemini 说,你可以手动传递一个 this 指针。