陌生缘林 2015-05-02 12:44 采纳率: 0%
浏览 2781

C++,类模板作为基类派生及指针的问题。

      **C++,类模板作为基类派生某几个类,可不可以定义指向基类的指针,然后通过这个指针来指向各个派生类?大家帮忙解答一下。我是初学者,勿喷啊!**            以下面例子为例。C++的。

    #include<iostream>
    using namespace std;
    template<class T1>
    class A
    {
     protected:
            T1 a;
     public:
           virtual void output1();
           virtual void input();
           virtual void output2();
      };

     template<class T1>
     void A<T1>::output1()
     {
           cout<<"输入a:"<<endl;
     }

    template<class T1>
    void A<T1>::input()
     {
          cin>>a;
     }

    template<class T1>
    void A<T1>::output2()
     {
          cout<<a<<endl;
     }

     template<class T2>
      class B:virtual public A<T2>
       {
       };


      template<class T3>
     class C:virtual public A<T3>
       {
      };

    int main()
      {
        A<int> *pt;
        B<int> B1;
        C<double> C1;
        int choice;
      cout<<"chioce 1 or 2?"<<endl;
      cin>>choice;
      if(choice==1)
              pt=&B1;
      else
             pt=&C1;
      pt->output1();
      pt->input();
      pt->output2();
      return 0;
    }

--------------------Configuration: 38 - Win32 Debug--------------------
Compiling...
38.cpp
E:\SoftDocument\C++\38\38.cpp(58) : error C2440: '=' : cannot convert from 'class C *' to 'class A *'
Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
执行 cl.exe 时出错.

38.exe - 1 error(s), 0 warning(s)

  • 写回答

4条回答

  • oyljerry 2015-05-02 14:14
    关注

    你c是double类型,a是int类型。两者不y一致。

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!