class Email
{
public:
//Email(){} //If I added this, this problem is resolved. But I am not sure this is good solution.
Email(EmailBuilder builder){
...
}
public class EmailBuilder {
EmailBuilder() {...};
EmailBuilder SetAddress(...) {...};
EmailBuilder SetSubject(...) {...};
EmailBuilder SetBody(...) {...};
Email Build() {...};
}
};
class EmailSender
{
public:
...
SendEmail(const Email& mail)
{
mEmail = mail; }
private:
Email mEmail; //error : emailsender.h(8): error C2512: 'Email': no appropriate default constructor available
}
int main()
{
Email mail = new Email.Builder
.SetAddress("me@mail.com")
.SetSubject("C++ builders")
.SetBody("I like this API, don't you?")
.Build();
...
EmailSender emailSender;
...
emailSender.SendEmail(mail);
...
}
It is just pseudocode.
I want to copy parameter(=mail) to local object(=mEmail).
But I cannot it.
If I added default constructor(Email(){}), this problem is resolved. But I am not sure this is good solution.
Could you give me more good solution?