加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在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; }

希望你意识到这是多么邪恶.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读