关于使用VS2015编写c++时 定义静态数据成员时遇到的问题. 具体代码如下。

头文件的定义:#ifndefBUDGET_H#defineBUDGET_HclassBudget{private:staticfloatCorpBudget;floatd... 头文件的定义:

#ifndef BUDGET_H
#define BUDGET_H
class Budget
{
private:
static float CorpBudget ;
float divBudget;
};
float Budget::CorpBudget = 2.0;
#endif
具体错误提示:
严重性 代码 说明 项目 文件 行
错误 LNK2005 "private: static float Budget::CorpBudget" (?CorpBudget@Budget@@0MA) 已经在 budget.obj 中定义 test e:\visual studio 2015\Project\test\test\t.obj 1
错误 LNK1169 找到一个或多个多重定义的符号 test e:\visual studio 2015\Project\test\x64\Debug\test.exe 1
小白表示已经将静态数据成员的定义写在if宏内了,为啥还会显示重复定义呢? 将静态数据成员的定义写在测试函数内或者实现文件内就没问题了。。?
展开
 我来答
如此甚好118
2016-06-07 · TA获得超过117个赞
知道小有建树答主
回答量:92
采纳率:0%
帮助的人:83.2万
展开全部
静态成员不是必须要初始化的,而且你这样初始化也不对,这个初始化可以用初始化参数列表或者在构造函数里做,或者加命名空间像你这样访问,但都是在cpp里,头文件不能有这样的语句
更多追问追答
追问
首先静态成员是类的成员,在类内的只是声明,必须在类体外定义,不能在构造函数内初始化!这是类的属性不是对象的
首先静态成员是类的成员,在类内的只是声明,必须在类体外定义,不能在构造函数内初始化!这是类的属性不是对象的
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式