【发布时间】:2017-08-16 02:40:47
【问题描述】:
#include <iostream>
using namespace std;
class Counter
{
protected:
unsigned int count;
public:
Counter ():count ()
{ }
Counter (int c):count (c)
{ }
unsigned int get_count () const
{ return count;}
Counter operator ++ ()
{return Counter (++count);}
};
class CountDn:public Counter
{
public:CountDn ():Counter (){ }
CountDn (int c):Counter (c){ }
CountDn operator -- ()
{return CountDn (--count);}
};
int main ()
{
CountDn c1;
CountDn c2 (100);
cout << "\nc1=" << c1.get_count ();
cout << "\nc2=" << c2.get_count ();
++c1;
++c1;
++c1;
cout << "\nc1=" << c1.get_count ();
--c2;
--c2;
cout << "\n c2=" << c2.get_count ();
CountDn c3 = ++c2;
cout << "\n c3=" << c3.get_count ();
cout << endl;
return 0;
}
当我使用重载的“++”运算符时出现错误,而当我使用“--”时效果很好。
错误信息是
37:14: error: conversion from ‘Counter’ to non-scalar type ‘CountDn’ requested
CountDn c3 = ++c2;
为什么会出现此错误? 这个错误是什么意思,我该如何解决?
【问题讨论】:
标签: c++ inheritance