在c中,如何创建从T到T *的转换?
发布时间:2020-12-16 10:27:19 所属栏目:百科 来源:网络整理
导读:在准备OOP考试时,我很高兴看到g编译下面的代码(没有实例化),即使它似乎毫无意义: templateclass T void f() { T t = "a"; t += 5.6; t-b(); T* p = t; p = p*(t/"string");} 然后我开始着手实现这个实例化和编译. 我创建了以下类: class A { public: A(con
在准备OOP考试时,我很高兴看到g编译下面的代码(没有实例化),即使它似乎毫无意义:
template<class T> void f() { T t = "a"; t += 5.6; t->b(); T* p = t; p = p*(t/"string"); } 然后我开始着手实现这个实例化和编译. 我创建了以下类: class A { public: A(const char* s) {} void operator+=(double d) {} A operator/(char* str) {return A("");} A* operator->() {return this;} A* operator=(A& a) {return &a;} void b() {} }; A* operator*(A* a,A b) {return new A("");} 它允许几乎所有的模板工作,除了线 T* p = t; 我的问题是,什么运算符或构造函数将使这一行工作?目前它给了我“错误:在初始化时无法将’A’转换为’A *’” 解决方法
这是一条完全毫无意义的路线.
但为了使其可编译,您可以提供转换运算符: operator A* () { return 0; } 希望你意识到这是多么邪恶. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |