C静态变量和未解析的外部错误
作者:互联网
我希望我能对类的静态变量做一些澄清.
例如:
我有两个不同的类,它们执行完全不同的功能,alpha和beta.在alpha中,我声明了一个beta类型的静态变量,所以它看起来像这样:
//alpha.h
#pragma once
#include <iostream>
#include "beta.h"
class alpha{
public:
alpha(){
}
static beta var;
void func(){
var.setX(3);
}
void output(){
}
};
//beta.h
#pragma once
#include <iostream>
using namespace std;
class beta{
public:
int x;
char y;
beta(){
x = 0;
y = ' ';
}
void setX(int _X){
x = _X;
}
};
//main.cpp
#include <iostream>
#include <iomanip>
#include "alpha.h"
using namespace std;
int main(){
alpha x, y, z;
x.func();
}
现在,当我尝试编译它时,我得到一个未解决的外部错误:
error LNK2001: unresolved external symbol “public: static class beta
alpha::var” (?var@alpha@@2Vbeta@@A)
我不确定要改变什么,或者我需要添加什么来制作像这样的工作.我希望x,y和z基本上共享相同的beta变量.我想我可以通过将一个beta变量引用到每个变量中来完成同样的事情.但是我想知道在这里使用static关键字是否可以做同样的事情,因为类的静态成员在类的任何实例中都具有相同的值.除非我的定义错了.
解决方法:
类中的静态变量仍然必须在某处定义,就像方法一样:
把它放在main.cpp中:
beta alpha::var;
标签:c,class,static,linker-errors 来源: https://codeday.me/bug/20190929/1834096.html