未解析的外部静态变量

use*_*108 3 c++ double static include visual-studio-2012

我有一个名为 Pub 的类,它具有以下标头:

#pragma once



class Pub
{

public:
    static double X_FACTOR;
    static double Y_FACTOR;
    static const int INIT_SCREEN_WIDTH=500;
    static const int INIT_SCREEN_HEIGHT=550;


    Pub(void);
    ~Pub(void);
};
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下内容在 main.cpp 中设置变量 Y_FACTOR:

Pub::Y_FACTOR=1.0;
Run Code Online (Sandbox Code Playgroud)

是的,Pub.h 已正确包含,这可以证明我可以访问 INIT_SCREEN_WIDTH 和 INIT_SCREEN_HEIGHT 但是,当我这样做时,我收到以下错误:

错误 6 错误 LNK2001:无法解析的外部符号“public:静态双 Pub::Y_FACTOR”(?Y_FACTOR@Pub@@2NA) C:\Users\Pedro-Estevan-Juarez\Documents\Visual Studio 2012\Projects\Project2\Project2\ main.obj Project2 错误 7 错误 LNK1120: 1 无法解析的外部 C:\Users\Pedro-Estevan-Juarez\Documents\Visual Studio 2012\Projects\Project2\Debug\Project2.exe 1 1 Project2

我怀疑这是语法方面的问题,有人可以帮我吗?

Zij*_*gWu 7

类定义中的代码只是一个声明。您需要在 cpp 文件中添加静态变量的定义。在使用它的任何函数之前将其添加到您的 cpp 文件和文件范围中。

double Pub::Y_FACTOR;
Run Code Online (Sandbox Code Playgroud)

  • 是的,这有效,但是这是为什么呢?必须这样做对我来说似乎很陌生? (3认同)