gpt4 book ai didi

c++ - 从友元函数访问静态变量

转载 作者:搜寻专家 更新时间:2023-10-31 00:21:13 25 4
gpt4 key购买 nike

class Base
{
private:
static int num;
public:
friend void setnum(Base obj);
};

void setnum(Base obj)
{
obj.num=4; /* Error */
}

友元函数应该可以访问类的所有私有(private)数据。我在这里错过了什么?我似乎无法从友元函数访问静态变量。

Error from codepad--> In function setnum(Base)': undefined reference to
Base::num'

Error from visual studio--> error LNK2001: unresolved external symbol "private: static int Base::num"

最佳答案

您只声明了静态变量num。你必须定义它:

class Base
{
private:
static int num;
public:
friend void setvals(Base obj);
};

// This must be in a .cpp
int Base::num;

void setvals(Base obj)
{
obj.num=4;
}

此代码有效。

编辑:

实际上你可以按如下方式实现setvals()函数:

void setvals()
{
Base::num=4;
}

在您的基类中:

friend void setvals(); 

因为 num 是静态的。

关于c++ - 从友元函数访问静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4878768/

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