c++ - 模板类转换错误

标签 c++ class templates

我在使用模板类中的一个函数时遇到问题。

<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/

相关文章:

class - 如何将迭代器关联到 OCaml 中的集合

c++ - 如何将一个对象的多个实例发送到一个函数中

javascript - WordPress仅在用户未登录时执行javascript文件

c++ - 离开 C++ 函数时程序崩溃....你认为它是什么?

c++ - 我应该担心用户可能会弄​​乱我的程序文件吗?

c# - C# 中的命名空间类冲突 - 寻找建议

接受参数化类型(包括子类型)的 C++ 函数

c++ - 二进制 '==' : no operator found which takes a left-hand operand of type 'std::string' (or there is no acceptable conversion)

C++:避免​​在公共(public)接口(interface)中使用特定于库的类型

python - OpenCV 概率霍夫线变换使用 C++ 和 Python 给出不同的结果?