【发布时间】:2021-11-13 17:26:17
【问题描述】:
我可以不使用. 运算符将实例发送到函数吗?
例如:
// header file
class A
{
public:
void foo() {std::cout << "Hello" << std::endl;}
};
// main file
A instance = new A;
instance.foo();
// instead do something like this
A::foo(instance);
我可以这样做吗?
【问题讨论】:
-
您需要将函数更改为
static并接受A*作为参数。你试过这样做吗? -
除非它不应该是你的“主文件”中的
A*- 不清楚因为你在那个sn-p中有非编译代码 -
我的问题是,我可以在不使用 .运算符
-
嗯,你可以写成
(instance.*&A::foo)(),那就是运营商.*而不是.,或者如果你真的讨厌经期std::invoke(&A::foo, instance)。但这一切都很愚蠢,那么您实际上想做什么? -
@reem_mikulsky
A instance = new A; instance.foo();无法编译。您需要改用A instance; instance.foo();或A *instance = new A; instance->foo(); delete instance;。