关于使用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宏内了,为啥还会显示重复定义呢? 将静态数据成员的定义写在测试函数内或者实现文件内就没问题了。。? 展开
#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宏内了,为啥还会显示重复定义呢? 将静态数据成员的定义写在测试函数内或者实现文件内就没问题了。。? 展开
1个回答
展开全部
静态成员不是必须要初始化的,而且你这样初始化也不对,这个初始化可以用初始化参数列表或者在构造函数里做,或者加命名空间像你这样访问,但都是在cpp里,头文件不能有这样的语句
更多追问追答
追问
首先静态成员是类的成员,在类内的只是声明,必须在类体外定义,不能在构造函数内初始化!这是类的属性不是对象的
首先静态成员是类的成员,在类内的只是声明,必须在类体外定义,不能在构造函数内初始化!这是类的属性不是对象的
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询