gpt4 book ai didi

C++ class & friend visual studio链接错误

转载 作者:行者123 更新时间:2023-11-30 05:33:55 27 4
gpt4 key购买 nike

 #include <iostream>

using namespace std;

class A
{
static int x;
int y;

private:
friend void f(A &a);

public:
A()
{
x=y=5;
}

A(int xx,int yy)
{
x=xx;
y=yy;
}

//static void getVals(int &xx, int &yy);
void getVals(int *xx, int *yy)
{
*xx=x;
*yy=y;
}

void f(A &a)
{
int x,y;
a.getVals(&x,&y);
cout << a.x << "; " <<a.y << endl;
}
};

int main()
{
A a1;
A a2(3,8);

f(a1);
f(a2);

return 0;
}

我在 visual studio 中遇到了 2 个链接错误:

Error 1 error LNK2019: unresolved external symbol "void __cdecl f(class A &)" (?f@@YAXAAVA@@@Z) referenced in function _main

Error 2 error LNK2001: unresolved external symbol "private: static int A::x" (?x@A@@0HA)

请帮助解决这些错误

最佳答案

静态成员变量只存在一次,在类的对象之间共享。因为静态成员变量不是单个对象的一部分,所以您必须显式定义静态成员。通常显式定义放在类的源文件(cpp)中:

头文件:

class A
{
static int x;
};

源文件:

int A::x = 0; // <- explicitly definition and initialization

关于C++ class & friend visual studio链接错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34524499/

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