C++;静态变量在Visual Studio中生成致命错误LNK1120:1未解析的外部 我是C++新手,我想学习静态关键字的不同用法,我读到其中一个是在类中定义静态变量,并使用范围操作符调用它。我试图使用它,但VisualStudio2012产生了一个链接错误。我的代码是: class Vehicle { public: Vehicle(){}; ~Vehicle(){}; static int temp; }; int _tmain(int argc, _TCHAR* argv[]) { Vehicle::temp=100; std::cout << Vehicle::temp << std::endl; system("Pause"); return 0; } class车辆 { 公众: 车辆{}; ~Vehicle(){}; 静态温度; }; int _tmain(int argc,_TCHAR*argv[] { 车辆:温度=100; std::cout c:\users\avraam\documents\visualstudio 2012\Projects\LearningC++\Debug\LearningC++.exe:致命错误LNK1120:1未解析的外部
什么可能导致此问题 Edit1(更清楚地说):C++;静态变量在Visual Studio中生成致命错误LNK1120:1未解析的外部 我是C++新手,我想学习静态关键字的不同用法,我读到其中一个是在类中定义静态变量,并使用范围操作符调用它。我试图使用它,但VisualStudio2012产生了一个链接错误。我的代码是: class Vehicle { public: Vehicle(){}; ~Vehicle(){}; static int temp; }; int _tmain(int argc, _TCHAR* argv[]) { Vehicle::temp=100; std::cout << Vehicle::temp << std::endl; system("Pause"); return 0; } class车辆 { 公众: 车辆{}; ~Vehicle(){}; 静态温度; }; int _tmain(int argc,_TCHAR*argv[] { 车辆:温度=100; std::cout c:\users\avraam\documents\visualstudio 2012\Projects\LearningC++\Debug\LearningC++.exe:致命错误LNK1120:1未解析的外部,c++,visual-studio-2012,static-variables,C++,Visual Studio 2012,Static Variables,什么可能导致此问题 Edit1(更清楚地说): 我的问题是如何访问类中声明的静态变量?不使用成员函数也可以吗?您需要定义temp,将其添加到class Vechicle之后: class Vehicle { // Left out class code for brevity void useTemp() { temp = 200 ; } // Adding method inside class the uses temp }; int Vehicle::temp = 0 ; 注意,
我的问题是如何访问类中声明的静态变量?不使用成员函数也可以吗?您需要定义
temp
,将其添加到class Vechicle
之后:
class Vehicle
{
// Left out class code for brevity
void useTemp() { temp = 200 ; } // Adding method inside class the uses temp
};
int Vehicle::temp = 0 ;
注意,定义temp
时不需要static
关键字。由于它是static
,因此不需要类的实例来访问变量,因此main
中的代码是正确的:
Vehicle::temp=100;
std::cout << Vehicle::temp << std::endl;
Vehicle v1 ;
v1.useTemp() ;
std::cout << Vehicle::temp << std::endl;
车辆::温度=100;
std::cout您需要定义类外的静态成员:
#include <iostream>
class Vehicle
{
public:
Vehicle(){};
~Vehicle(){};
static int temp;
};
int Vehicle::temp = 0;
int _tmain(int argc, TCHAR* argv[])
{
Vehicle::temp = 100; //^^access the variable with classname plus ::
std::cout << Vehicle::temp << std::endl;
std::cin.get();
return 0;
}
#包括
等级车辆
{
公众:
车辆{};
~Vehicle(){};
静态温度;
};
内部车辆::温度=0;
int_tmain(int argc,TCHAR*argv[])
{
Vehicle::temp=100;//^^使用classname plus:访问变量:
std::您是否需要定义变量。在类定义之后添加int Vehicle::temp;
。@AvraamMavridis我添加了一些详细信息,希望能够清楚地说明如何在类内部和外部使用temp
。@MehdiKaramosly您的意思是什么?我在main内部为它赋值。定义时不提供初始值是可以的现在它看起来好多了,如果你不在外部初始化它,然后错误地使用它,你会得到一个随机值(内存中的值),所以在外部初始化它是明智的。