Error message prefix postfix decrement operator

I keep getting this error on this and I have no idea how to fix it:

prog.cpp:116:9: error: cannot decrement value of type 'NumDays'
Z = --add;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
 #include<iostream>
#include<stdlib.h>


using namespace std;  

class NumDays

{
private:
double hours;
double days;

public:

NumDays()
{
    hours = 0;
    days =  0;
    
}

NumDays (double h)
{
    hours = h;
    days = h/8;
}

void setHours(double h)

{
    hours = h;
    days = h/8;
}

double getHours() const
{
    return hours;
}

void setDays(double d)
{
    days =d;
    hours =d/8;
}

double getDays() const
{
    return days;
}

NumDays operator + (NumDays& b)
{
    
NumDays result;
result.setHours(this->getHours()+b.getHours());
return result;

}

NumDays operator - (NumDays& b)
{
    NumDays result;
    result.setHours (this->getHours()-b.getHours());
    return result;
}
NumDays &operator ++()
{
    this->setHours(this->getHours() + 1);
    return*this;
}

const NumDays operator ++ (int)
{
    NumDays result = *this;
    this->setHours(this->getHours() + 1);
    return result;
}
const NumDays operator -- (int)
{
    NumDays result = *this;
    this->setHours(this->getHours() - 1);
    return result;
}

};


int main()
{
    NumDays X(12), Y(8), Z, add, sub;
    
    cout << "12 hours coverted to days ="
    << X.getDays() <<endl;
    cout << "8 hours coverted to days ="
    << Y.getDays()<< endl;
    
    add = X + Y;
    
    sub=X-Y;
    
    cout << "\nThe addition operator +  : "
    << add.getDays() << endl;
    
    cout << "The subtraction operator -  : "
    << sub.getDays() << endl;
    
    Z = ++add;
    cout << "\n(++) The prefix increment operator  : "
    << Z.getDays() << endl;
    
    Z = add++;
    cout << "The postfix increment operator (++)     : "
    << Z.getDays() << endl;
    
    Z = --add;
    cout << "\n(--) The prefix decrement operator  : "
    << Z.getDays() << endl;
    
    Z = add--;
    cout << "The postfix decrement operator (--)    : "
    << Z.getDays() << endl;
    
    system("puse");
    return 0;
};
Last edited on
because you haven't defined this:
1
2
3
4
5
6
  NumDays operator -- ()
{
    NumDays result = *this;
    this->setHours(this->getHours() - 1);
    return result;
}

Also both your ++ give same result
Last edited on
Bless you. So simple, but I'm still new to this. thank a bunch!
const NumDays operator ++ (int)
const NumDays operator -- (int)

These should not return const NumDays, just NumDays
full disclosure: I've edited my previuos reply as well ;)
Topic archived. No new replies allowed.