读书人

《C++primer》读到第十二章12.4.4隐式

发布时间: 2012-09-14 23:00:48 作者: rapoo

《C++primer》读到第十二章12.4.4隐式类型转换有些疑问
书上说能够将其他类型转换成我们定义的类类型,那么下面代码怎么会出错呢?怎么没有发生隐式转换呢?是否缺少了前提条件啊?

C/C++ code
#include <iostream>#include <string>using namespace std;class Sales_item {public:    bool same_isbn(const Sales_item &rhs) const{}};void main(){    string b="aaa";    Sales_item item;    item.same_isbn(b);}


[解决办法]
你的sales类没有定义,传递string类型的构造函数。该构造函数为public,且不能用explicit声明。
[解决办法]
类型隐式转换,
通过单个参数的不用explicit声明的构造函数来将其它类型转换为自己定义的class类型
或通过 operator 类型()来将自己的class转换为其它类型。
楼主的代码,两个都不满足。
[解决办法]
C/C++ code
#include <iostream>#include <string>using namespace std;class Sales_item {public:    bool same_isbn(const Sales_item &rhs) const{}    Sales_item(const string& s="some string"){}  //需提供一个只有一个形参的构造函数};void main(){    string b="aaa";    Sales_item item;    item.same_isbn(b);} 

读书人网 >C++

热点推荐