c++ - 未解析的外部静态变量

标签 c++ visual-studio-2012 static include double

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

#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);
};

我试图在 main.cpp 中使用以下设置变量 Y_FACTOR:

Pub::Y_FACTOR=1.0;

是的,Pub.h 已正确包含,这可以通过我可以访问 INIT_SCREEN_WIDTH 和 INIT_SCREEN_HEIGHT 进行演示 但是,当我这样做时,出现以下错误:

Error 6 error LNK2001: unresolved external symbol "public: static double Pub::Y_FACTOR" (?Y_FACTOR@Pub@@2NA) C:\Users\Pedro-Estevan-Juarez\Documents\Visual Studio 2012\Projects\Project2\Project2\main.obj Project2 Error 7 error LNK1120: 1 unresolved externals C:\Users\Pedro-Estevan-Juarez\Documents\Visual Studio 2012\Projects\Project2\Debug\Project2.exe 1 1 Project2

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

最佳答案

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

double Pub::Y_FACTOR;

关于c++ - 未解析的外部静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19472422/

相关文章:

c++ - 在 libc++ 的 istringstream 的析构函数中未定义对运算符 delete 的引用

visual-studio-2012 - Visual Studio Gutter 窗口中的奇怪箭头

vb6 - Visual Studio 2012 合并 VB6 代码会自动对代码进行错误更改

c# - Selenium C# 的第二个测试方法失败

c++ - 将字符串传递给函数时出现 "conversion to const char*"错误

c++ - 通过 QStyledItemDelegate 以不同颜色显示 QTableWidgetItem 的文本

node.js - Express 没有为 React 构建正确提供静态文件

c++ - 基类中奇怪的重复模板模式和静态

C++继承问题错误C2084函数已经有一个主体

c++ - 我可以对结果使用静态变量 "cache"吗? C++