www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Convert struct to set of fields and pass it's to constructor

reply Suliman <evermind live.ru> writes:
Class constructor accept only set if fields like
this(string login, string pass)

Can I create structure, fill it, and than pass to constructor?

Like this:
```
import std.stdio;

struct ConnectSettings
{
	string login;
	string pass;
};
ConnectSettings cs;

void main()
{
  cs.login = "admin";
  cs.pass = "mypass";
}
```

and than pass to constructor it's like:

`... new SomeClass(cs)`


I tried, but get error, that ctor accept only fields list. Can I 
unroll struct to it?
Feb 01 2017
parent reply Minty Fresh <minty fresh.com> writes:
On Wednesday, 1 February 2017 at 13:37:27 UTC, Suliman wrote:
 Class constructor accept only set if fields like
 this(string login, string pass)

 Can I create structure, fill it, and than pass to constructor?

 Like this:
 ```
 import std.stdio;

 struct ConnectSettings
 {
 	string login;
 	string pass;
 };
 ConnectSettings cs;

 void main()
 {
  cs.login = "admin";
  cs.pass = "mypass";
 }
 ```

 and than pass to constructor it's like:

 `... new SomeClass(cs)`


 I tried, but get error, that ctor accept only fields list. Can 
 I unroll struct to it?
tupleof is probably what you're looking for. ie. new SomeClass(cs.tupleof); That said, why not have the constructor accept the struct as a parameter?
Feb 01 2017
parent Suliman <evermind live.ru> writes:
On Wednesday, 1 February 2017 at 13:51:28 UTC, Minty Fresh wrote:
 On Wednesday, 1 February 2017 at 13:37:27 UTC, Suliman wrote:
 Class constructor accept only set if fields like
 this(string login, string pass)

 Can I create structure, fill it, and than pass to constructor?

 Like this:
 ```
 import std.stdio;

 struct ConnectSettings
 {
 	string login;
 	string pass;
 };
 ConnectSettings cs;

 void main()
 {
  cs.login = "admin";
  cs.pass = "mypass";
 }
 ```

 and than pass to constructor it's like:

 `... new SomeClass(cs)`


 I tried, but get error, that ctor accept only fields list. Can 
 I unroll struct to it?
tupleof is probably what you're looking for. ie. new SomeClass(cs.tupleof); That said, why not have the constructor accept the struct as a parameter?
Because it's implemented not by me, and I do not want to touch its realization.
Feb 01 2017