gpt4 book ai didi

c++ - 将 C++ 静态成员函数声明为其所在类的友元(语法)

转载 作者:可可西里 更新时间:2023-11-01 16:37:49 25 4
gpt4 key购买 nike

将静态成员函数声明为其所在类的友元 的语法是什么。

class MyClass
{
private:
static void Callback(void* thisptr); //Declare static member
friend static void Callback(void* thisptr); //Define as friend of itself
}

我可以把它折叠成这个单衬里吗?

class MyClass
{
private:
friend static void Callback(void* thisptr); //Declare AND Define as friend
}

还有另一种方法可以将它们全部折叠成一行吗?

回答

请不要投反对票,这源于我对 C++ 静态成员函数缺乏了解。答案是他们不需要成为 friend ,他们已经可以访问私有(private)成员。所以我的问题有点无效。

最佳答案

其实静态的就不用friend更准确了。静态成员函数可以像普通成员函数一样访问类的内部。唯一的区别是它没有 this 指针。

void MyClass::Callback(void* thisptr) {
MyClass* p = static_cast<MyClass*>(thisptr);
p->public_func(); // legal
p->private_func(); // legal
p->private_int_var = 0; // legal
}

关于c++ - 将 C++ 静态成员函数声明为其所在类的友元(语法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com