Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+中模板类的类型转换问题+;_C++_Templates_Casting_Operator Overloading_Type Conversion - Fatal编程技术网

C++ C+中模板类的类型转换问题+;

C++ C+中模板类的类型转换问题+;,c++,templates,casting,operator-overloading,type-conversion,C++,Templates,Casting,Operator Overloading,Type Conversion,我不是一个模板或类型铸造专家,所以我真的需要一些帮助。 我不得不使用现有的模板类,并遇到以下类型转换问题。 我放了一些示例代码来说明这个问题 //template class definition template <class IntType> class CUSTOMIZE_Int: public CUSTOMIZE_Type { public: operator const IntType() const; private: IntType m_in

我不是一个模板或类型铸造专家,所以我真的需要一些帮助。 我不得不使用现有的模板类,并遇到以下类型转换问题。 我放了一些示例代码来说明这个问题

//template class definition
template <class IntType>
class CUSTOMIZE_Int: public CUSTOMIZE_Type
{
 public:
     operator const IntType() const;  
 private:
     IntType m_int;
}

template<class IntType>
CUSTOMIZE_Int<IntType>::operator const IntType() const
{
   return m_int;  
}

// the template class instantiation
typedef CUSTOMIZE_Int<WRAPPER_Int32> CUSTOMIZE_UnsignedInt;
并创建一个变量,并尝试进行转换以获取数据

class IntNum& i;
const WRAPPER_Int32 j = i;
出现以下编译错误:

error: cannot convert "IntNum" to "const WRAPPER_Int32" in initialization.
转换的正确方法是什么,或者我的代码有什么问题?

谢谢你的评论

我猜您希望运算符IntType()

若要在此处执行操作,请将i指定给j:

const WRAPPER_Int32 j = i;
但是,这不是隐式转换,您必须明确地进行转换:

const WRAPPER_Int32 j = (WRAPPER_Int32) i;

希望这能有所帮助。

当我修复琐碎的编译器错误时(缺少
等,从
自定义类型
中删除派生,提供
包装器的定义\u Int32
,使
I
实际引用了一些东西),使用
-Wall-Werror-Wextra-ansi
编译GCC 4.1.2时不会出现问题。所以一定有什么事你没告诉我们!您编写的代码无法编译,因为您不能有未初始化的引用。你的实际代码是什么样子的?嗨,马克,谢谢你的评论。只是一个快速的反馈,我怀疑“I”已经初始化,否则,它不应该是另一种类型的错误(我发现的未初始化引用,等等)?好吧,我也会从这方面调查的,伙计们,非常感谢你们的评论。有一个头文件我忘了包括在内。奥利和马克,我对你的评论都很满意。
const WRAPPER_Int32 j = i;
const WRAPPER_Int32 j = (WRAPPER_Int32) i;