首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个类模板什么意思

2013-04-20 
求助这个类模板什么意思#include iostreamconst char _PTR[]GOODBYR TIME //这个为什么一定要定义在

求助这个类模板什么意思
#include <iostream>

const char _PTR[]="GOODBYR TIME"; //这个为什么一定要定义在全局区啊,我把它放在main函数中就不行了,还有这个 为什么不可以换成const char *_PTR="GOODBYE TIME"一换了就报错了

template <char const*_SET_STR>

class _PRINTF_CHAR
{
const char *_J_str;

public:
_PRINTF_CHAR()

{

_J_str=_SET_STR;

}

void _OUTPUT_STR()

{

std::cout<<_J_str;

}
};

int main(int agrc,char **agrv)


{

_PRINTF_CHAR<_PTR>()._OUTPUT_STR();

return 0;


}
 有人说全局变量都不行,要常量表达式,的确是这样,还有人说const 表示只读,并不表示常量表达式 是么。。。还有模版需要链接,链接是什么啊
[解决办法]

引用:
对于指针非类型形参,只能使用具有外部链接的实参(以保证具有地址唯一性),因此对于_PTR数组,必须如下定义:

extern const char _PTR[]="GOODBYR TIME";

而const char *_PTR="GOODBYE TIME"不行是因为_PTR指向了一个具有内部链接属性的对象(字符串字面量具有内部链接性,因而无法保证地址唯一)。
……

这个是旧版的行为了,现在允许内部链接属性了,但必须是 constant expression,所以还可以这么写。
constexpr const char _PTR [] = "GOODBYR TIME";
[解决办法]
《离散数学及其应用(原书第6版)》

热点排行