2 qq 22717731 qq_22717731 于 2014.12.19 12:13 提问

c/c++全局变量的声明和定义

1.cpp
const int point=50; //point 里放的是特征点的数量
fun1(){...}
2.h
extern const int point;
3.cpp
#include"2.h"
fun2(){ float a[point]={0,} }//在cpp里定义一个point维的数组
4.h
#include"2.h"
class ObsFun
{ ObsFun();
.....
}
ObsFun()
{ for (int i=0;i<point;i++);//以特征点的数量为循环次数
}
error:3.cpp:应输入常量表达式
4.h:“point”:未声明的标识符
我该怎么修改才能满足我的使用情况呢?

4个回答

caozhy
caozhy   Ds   Rxr 2014.12.19 12:28
qq_22717731
qq_22717731 不好意思,网络卡,多点了几下。。。
3 年多之前 回复
qq_22717731
qq_22717731 感谢回答,但是我的方法就是“在某一个.cpp中定义,在头文件中声明,在使用的地方,包含头文件”,就是这样做的为什么会出错呢? 有回答说“在c++中const有限定变量作用域的作用,它限制变量只在本编译单元内可以使用”,我将1.cpp中的point定义改成“extern const int point=50;”,还是会提醒相同的error。 ~是不是和我使用的情况比较特殊有关??一处是用在在cpp文件中数组的定义,另一处用在头文件中类函数中。
3 年多之前 回复
qq_22717731
qq_22717731 感谢回答,但是我的方法就是“在某一个.cpp中定义,在头文件中声明,在使用的地方,包含头文件”,就是这样做的为什么会出错呢? 有回答说“在c++中const有限定变量作用域的作用,它限制变量只在本编译单元内可以使用”,我将1.cpp中的point定义改成“extern const int point=50;”,还是会提醒相同的error。 ~是不是和我使用的情况比较特殊有关??一处是用在在cpp文件中数组的定义,另一处用在头文件中类函数中。
3 年多之前 回复
qq_22717731
qq_22717731 感谢回答,但是我的方法就是“在某一个.cpp中定义,在头文件中声明,在使用的地方,包含头文件”,就是这样做的为什么会出错呢? 有回答说“在c++中const有限定变量作用域的作用,它限制变量只在本编译单元内可以使用”,我将1.cpp中的point定义改成“extern const int point=50;”,还是会提醒相同的error。 ~是不是和我使用的情况比较特殊有关??一处是用在在cpp文件中数组的定义,另一处用在头文件中类函数中。
3 年多之前 回复
qq_22717731
qq_22717731   2014.12.19 15:03

感谢回答,但是我的方法就是“在某一个.cpp中定义,在头文件中声明,在使用的地方,包含头文件”,就是这样做的为什么会出错呢?
有回答说“在c++中const有限定变量作用域的作用,它限制变量只在本编译单元内可以使用”,我将1.cpp中的point定义改成“extern const int point=50;”,还是会提醒相同的error。
~是不是和我使用的情况比较特殊有关??一处是用在在cpp文件中数组的定义,另一处用在头文件中类函数中。

u014692369
u014692369   2014.12.19 23:06

1.cpp
const int point=50; //point 里放的是特征点的数量
fun1(){...}
2.h
extern const int point;
这不是将point变量定义了两次吗

u014692369
u014692369 打错,是声明了两次
3 年多之前 回复
caozhy
caozhy   Ds   Rxr 2015.01.03 07:33

和常量没有关系。但是你只能定义一次,别的地方是声明,不能重复定义。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!