C++静态方法调用静态变量报错:undefined reference to 'namespace::class::field'

本文介绍在C++中如何正确地初始化静态成员变量,并解决因未正确初始化而导致的编译错误问题。通过实例展示了在类的静态方法中引用静态变量时所需遵循的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        作为一个之前一直习惯写java的coder来说,开始写C++时候会有各种不习惯的问题,本来感觉是个显而易见的东西,编译却发现会报错,今天就说一下在C++类里一个静态方法调用静态变量时出现的错误,开始写的代码如下:

功能很简单,有个静态的test方法,两个静态变量,希望在test里进行调用

头文件:test.h,

 namespace test{
class Test{ 
public:
    static void test();
    static int testInt;  
    static const char * testCode;
};

 }

cpp文件:test.cpp

namespace test{
class Test{
 void Test::test(){

testInt=10;

testCode="test";

}

 }

恩,完成,感觉这应该没啥问题,但是编译会报错:undefined reference to 'test::Test::testInt'....字面意思是没定义,有点摸不着头脑,这怎么可能有问题呢,后来google了一番才发现,这种情况需要在cpp文件里,对变量进行显示的初始化才可以,注意是在cpp文件里,对test.cpp文件进行如下修改:

namespace test{

int Test::testInt=0;

const char* Test:: testcode="test";

class Test{
 void Test::test(){

testInt=10;

}

 }

这样之后就可以顺利运行了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值