C++ VC+中的Cfitsio错误+;6
我正在连接两个软件,其中一个是使用sfits库处理fits图像,在编译程序时,它在XLOCALE文件中显示错误,该文件在vc98/include文件夹中接收,我使用vc 6.0和XP 错误:错误C2955:“ctype”:使用 类模板的类型需要模板 参数列表C:\程序 文件\Microsoft Visual 研究6\VC98\INCLUDE\xlocale(513): 请参阅“ctype”的声明 错误指向行:int 适合\u获取\u压缩\u类型(fitsfile *fptr、int*ctype、int*status) 在XLOCALE文件中,其指向:C++ VC+中的Cfitsio错误+;6,c++,class,templates,visual-c++,C++,Class,Templates,Visual C++,我正在连接两个软件,其中一个是使用sfits库处理fits图像,在编译程序时,它在XLOCALE文件中显示错误,该文件在vc98/include文件夹中接收,我使用vc 6.0和XP 错误:错误C2955:“ctype”:使用 类模板的类型需要模板 参数列表C:\程序 文件\Microsoft Visual 研究6\VC98\INCLUDE\xlocale(513): 请参阅“ctype”的声明 错误指向行:int 适合\u获取\u压缩\u类型(fitsfile *fptr、int*ctype、
template<class _E>
class ctype : public ctype_base {
public:
typedef _E char_type;
ctype(const _Locinfo& _Lobj, size_t _R = 0)
: ctype_base(_R) {_Init(_Lobj); }
static size_t __cdecl _Getcat()
{return (_LC_CTYPE); }
_PROTECTED:
virtual ~ctype()
{if (_Ctype._Delfl)
free((void *)_Ctype._Table); }
protected:
virtual const _E *do_narrow(const _E *_F, const _E *_L,
char, char *_V) const
{for (; _F != _L; ++_F, ++_V)
*_V = (char)_NARROW(_E, *_F);
return (_F); }
private:
_Locinfo::_Ctypevec _Ctype;
};
template<class _E>
locale::id ctype<_E>::id;
模板
类别ctype:公共ctype_基{
公众:
类型定义为字符类型;
ctype(const\u Locinfo和\u Lobj,size\u t\u R=0)
:ctype_base(_R){_Init(_Lobj);}
静态大小\u t\u\u cdecl\u Getcat()
{return(_LC_CTYPE);}
_受保护:
虚拟~ctype()
{if(_Ctype._Delfl)
自由((void*)_Ctype._Table);}
受保护的:
虚拟常数do_窄(常数E*F,常数E*L,
char,char*V)const
{for(;_F!=_L;++u F,++u V)
*_V=(字符)窄(_E,*_F);
返回(_F);}
私人:
_Locinfo::\u Ctypevec\u Ctype;
};
模板
locale::id ctype::id;
提前感谢…ctype是类型的模板,而不是类型本身。您的参数必须是
ctype
或ctype
,这取决于您使用的字符类型。ctype是类型的模板,而不是类型本身。您的参数必须是ctype
或ctype
,这取决于您使用的字符类型。非常感谢您的回复,但是您能详细说明一下吗,因为我不知道在哪里进行更正…在调用函数时,ctype被称为(int*ctype)…thnx。啊,我得到的印象是您试图使用类模板ctype,显然编译器也是如此。但你没有,你只是用同一个名字。在该代码附近是否有使用命名空间std的?这可能会混淆编译器。VC6没有那么可靠…thanx需要回复,我已经检查了是否使用nqmespace std,但它不在该文件中的任何位置..我记得VC6在名称查找方面存在重大问题。我真的不想麻烦了。只需重命名变量,或者(甚至更好)升级到最新的VC版本。非常感谢先生的回复,但请您详细说明一下,因为我不知道在哪里进行更正…在调用函数时,ctype被称为(int*ctype)…thnx。啊,我得到的印象是您尝试使用类模板ctype,显然,编译器也是如此。但你没有,你只是用同一个名字。在该代码附近是否有使用命名空间std的?这可能会混淆编译器。VC6没有那么可靠…thanx需要回复,我已经检查了是否使用nqmespace std,但它不在该文件中的任何位置..我记得VC6在名称查找方面存在重大问题。我真的不想麻烦了。只需重命名变量,或者(甚至更好)升级到最新的VC版本。