Property discussion wrap-up
TommiT
tommitissari at hotmail.com
Wed Jan 30 15:25:06 PST 2013
On Wednesday, 30 January 2013 at 19:44:43 UTC, TommiT wrote:
> [..]
More of fleshing out of namespace_thingy:
struct S
{
private:
int m_startTime;
int m_endTime;
int m_duration;
public:
namespace_thingy start
{
int opGet() const { return m_startTime; }
start opAssign(int t)
{
m_startTime = t;
m_duration = m_endTime - m_startTime;
return start;
}
}
namespace_thingy end
{
int opGet() const { return m_endTime; }
end opAssign(int t)
{
m_endTime = t;
m_duration = m_endTime - m_startTime;
return end;
}
dur opAssign(string s : "+")(int t)
{
m_endTime += t;
m_duration = m_endTime - m_startTime;
return dur;
}
}
namespace_thingy dur
{
dur opAssign(int t)
{
m_duration = t;
m_endTime = m_startTime + m_duration;
return dur;
}
bool opEquals(int t) const
{
return m_duration == t;
}
}
this(int t)
{
start = 0;
end = t;
assert(dur == 100);
}
}
...
S s;
s.start = 1;
s.end = 8;
assert(s.dur == 7);
s.end += 3;
assert(s.dur == 10);
int v = s.start;
s.start += 42; // error: no match for opAssign!"+"(S.start, int)
// nor opAssign!"+"(int, int)
int d = s.dur; // error: no conversion from S.dur to int
More information about the Digitalmars-d
mailing list