2013-03-13 79 views
1

在java中它是可能的建設者setter方法返回建設者本身,這樣的調用可以鏈接,就像這樣:C++能做這個java builder模式嗎?

public class builder{ 

private String name; 
private int age; 
private char glyph; 

    public builder setName(String name){ 
    this.name = name; 
     return this; 
    } 

    public builder setAge(int age){ 
     this.age = age; 
     return this; 
    } 

public builder setGlyph(char glyph){ 
    this.glyph = glyph; 
    return this; 
} 

public static void main(String[] args){ 
    builder b = new builder().setName("").setAge(10).setGlyph('%'); 
} 
} 

在C是這可能++?

+0

你可以用與這些3個參數,一個constuctor – duffy356 2013-03-13 09:53:29

+0

你'setGlyph'方法'builder'作爲其聲明的返回類型,但不返回。這是內涵嗎? – mbatchkarov 2013-03-13 09:55:08

+0

如果在Java中可能,它必須在C++中可能。在彙編程序中它也必須是可能的:-)! – sk2212 2013-03-13 09:55:30

回答

6

是的,當然,你可以只返回一個參考建設者:

Builder & setSomething(const std::string & smth) 
{ 
    // do setting 
    return *this; 
} 
+0

太感謝你了,我從來不知道有一個這個關鍵字在C++! – user2103959 2013-03-13 09:54:25

+1

@ user2103959只要記住,'this'是一個指針,必須要提領'*'得到'builder'對象本身。 – 2013-03-13 09:58:57

+0

我認爲很討厭的問題,但是&before方法頭的需求是什麼? – user2103959 2013-03-13 10:01:46

2

是,功能鏈接當然是可能的。的setName例如執行將如下所示:

builder& setName(std::string name) 
{ 
    this->name = name; 
    return *this; 
} 

它返回通過this一個參考對象的指針,這是當然的當前對象。

+0

非常感謝! – user2103959 2013-03-13 09:54:40