我在使用模板类中的一个函数时遇到问题。
<code>template <class T></code><br/>
<code>T complex<T>::returnMod()</code><br/>
<code>{</code><br/>
<code>T mod(0);</code><br/>
<strong><code>mod = sqrt(pow(re,2.0) + pow(im,2.0));</code></strong><br/>
<code>return mod;</code><br/>
<code>}</code>
我收到错误:粗体行的“警告 C4244:‘=’:从‘double’到‘int’的转换,可能丢失数据”。我怎样才能告诉编译器使用为每个类对象调用的类型?我创建了两种不同类型的复数,一些使用 int,一些使用 double。谢谢。
最佳答案
问题似乎是您正在使用 int
类型实例化 complex
,并且编译器正在按照您的要求进行操作。 T
是 int,表达式 sqrt
返回一个 double
所以它必须转换。
我不确定您所说的我如何告诉编译器使用为每个类对象调用的类型?,但这是预期的行为。
关于c++ - 模板类转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9975827/