Error:E0415 no suitable constructor exists to convert from “int“ to “Rational“
Posted 林夕07
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Error:E0415 no suitable constructor exists to convert from “int“ to “Rational“相关的知识,希望对你有一定的参考价值。
场景:
这个问题是因为缺少对于的构造函数或者是该构造函数被声明为explicit。
可以参考下面这个场景。
#include <iostream>
using std::cout;
using std::endl;
class Rational1
public:
Rational1(int n = 0, int d = 1):num(n), den(d)
cout << __func__ << "(" << num << "/" << den << ")" << endl;
public:
int num; // 被除数
int den; // 除数
;
class Rational2
public:
explicit Rational2(int n = 0, int d = 1) :num(n), den(d)
cout << __func__ << "(" << num << "/" << den << ")" << endl;
public:
int num; // 被除数
int den; // 除数
;
void Display1(Rational1 r)
cout << __func__ << endl;
void Display2(Rational2 r)
cout << __func__ << endl;
int main()
Rational1 r1 = 11;
Rational1 r2(11);
Rational2 r3 = 11; // error E0415
Rational2 r4(11);
Display1(1);
Display2(2); // error E0415
return 0;
explicit关键字
1、指定构造函数或转换函数 (C++11起)为显式, 即它不能用于隐式转换和复制初始化.
2、explicit 可以与常量表达式一同使用. 函数若且唯若该常量表达式求值为 true 才为显式. (C++20起)
问题描述
Error:E0415 no suitable constructor exists to convert from “int“ to “Rational“
解决方案:
1. 自己实现对应的构造函数。(推荐)
2. 删掉被 explicit关键字修饰的构造函数。(不推荐)
以上是关于Error:E0415 no suitable constructor exists to convert from “int“ to “Rational“的主要内容,如果未能解决你的问题,请参考以下文章
mybatis配置,idea报错:java.sql.SQLException: No suitable driver found for jdbc://localhost:3306/mybatis_t
用tcpdump提示no suitable device found 怎么回事