我不明白转换的工作原理。
代码例如:

class Base
{
 private:
   int days;
 public:
   Base(int d):days(d){}
   virtual void somefunc..
   ...
};

class DayInYear:public Base
{
 public:
   DayInYear(int diy):Base(diy){}
   ...
}

class Month:public Base
{
 private:
   int month;
 public:
   Mounth(int dm,int m):Base(dm),month(m){}
   ...
}

int main()
{
 Base *arr[2] = {new DayInYear(100),new Month(20,4)};
 ...
}


我的问题是如何将Month类型转换为DayInYear类型?

最佳答案

编译器将无法自动为您转换类型,因为它们之间的关联性不足。

您可以在Month类中构建一个强制转换运算符。这将有原型

operator DayInYear() const;


并返回一个DayInYear对象。

然后,您可以编写(DayInYear)m;,其中mMonth实例。

关于c++ - 在C++中转换对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31159646/

10-10 19:42