SImple C++ code to D
Alexandre via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Tue Jul 15 07:40:08 PDT 2014
I have this struct:
enum AddrType { Abs, RVA, Rel };
struct Address
{
shared_ptr<DWORD> addr;
AddrType type;
Address(): type(Abs) {}
Address(DWORD addr, AddrType type):
addr(shared_ptr<DWORD>(new DWORD(addr))), type(type) {}
Address(shared_ptr<DWORD> addr, AddrType type):
addr(addr), type(type) {}
Address(const Address &ad):
addr(ad.addr), type(ad.type) {}
};
My problem is with default alue init...
Address(): type(Abs) {}
Address(DWORD addr, AddrType type):
addr(shared_ptr<DWORD>(new DWORD(addr))), type(type) {}
How to make this in D ?
I do this:
struct Address
{
RefCounted!(DWORD) addr;
AddrType type = AddrType.Abs;
this(DWORD addr, AddrType type)
{
addr(RefCounted!(DWORD)(new DWORD(addr)));
this.type = type;
}
/*Address(shared_ptr<DWORD> addr, AddrType type) :
addr(addr), type(type) {}
Address(const Address &ad) :
addr(ad.addr), type(ad.type) {}*/
};
It's correct ?
In case for a template, when I have this:
template <typename T> struct Wrap {
T val;
Wrap(T val): val(val) {}
};
I maded this:
template Wrap(T)
{
struct Wrap
{
T val;
this(T val){val = val;}
}
}
PS: ( I know about identation... it's wrong here... )
More information about the Digitalmars-d-learn
mailing list