opAssign overload question
gedaiu
szabobogdan at yahoo.com
Thu Apr 25 11:37:56 PDT 2013
Hi folks,
i have this struct:
import std.stdio, std.string;
struct Value {
private long intVal;
private bool boolVal;
private string type;
Value opAssign(long val) {
intVal = val;
if(val == 0) {
boolVal = false;
} else {
boolVal = true;
}
type = "LONG";
return this;
}
Value opAssign(bool val) {
if(val) {
boolVal = true;
intVal = 1;
} else {
boolVal = false;
intVal = 0;
}
type = "BOOL";
return this;
}
string getType() {
return type;
}
}
int main() {
Value data;
data = 1;
writeln(data);
writeln(data.getType());
assert(data.getType() == "LONG");
return 0;
}
output:
Value(1, true, "BOOL")
BOOL
Can anyone tell me why the compiler call opAssign(bool val) and
not opAssign(long val). I am passing an long value not a bool one.
Thanks,
Bogdan
More information about the Digitalmars-d-learn
mailing list