静态变量和未解决的外部错误

C++ Static variable and unresolved externals error

本文关键字:外部 错误 未解决 变量 静态      更新时间:2023-10-16

我希望我能得到一些关于类的静态变量的澄清。

例如

:我有两个不同的类,它们执行完全不同的函数,和。在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(); 
}

现在当我尝试编译这个时,我得到一个无法解决的外部错误:

错误LNK2001:未解析的外部符号"public: static class betaα:var"(? var@alpha@@2Vbeta@@A)

我不确定要改变什么,或者我还需要添加什么来使这样的工作。我想让x y和z共享相同的变量。我想我可以通过传递一个变量给它们来完成同样的事情。但我想知道是否有可能使用static关键字来做同样的事情,因为类的静态成员在类的任何实例中都具有相同的值。除非我定义错了。

类中的静态变量仍然必须在某处定义,就像方法一样:

放入main.cpp:

beta alpha::var;

添加到main.cpp:

<>之前βα:var;之前

var在h-file中只是类型声明。