2013-04-18 72 views
3

有沒有辦法強制類的用戶根據用於構造函數的數據構造const對象?強制用戶聲明對象const

例如,考慮周圍的一些緩衝小包裝類,可以是const或非const

class Wrapper { 
    public: 
    Wrapper(const char*); 
    Wrapper(char*); 
}; 

現在,如果用戶提供的是一個const,我可以迫使他們聲明對象是const在編譯時。那就是

// you have to do this if the input is const 
const char* a; 
// this will not compile 
Wrapper w(a); 
// but this will 
const Wrapper(a); 

任何想法?

+0

不,沒有辦法做到這一點。 – john

+1

對於工廠(函數),我認爲有一種方法(綁定到const ref)。 – dyp

+0

爲什麼不使用不可變包裝?即一個不允許對包裝對象進行更改的包裝器。 – dyp

回答

3

你不能在構造函數中做到這一點,但你可以創建一個返回const對象參數或指針的工廠。但是,您需要禁用複製和複製構造,並且可能不提供任何價值。

+0

我在這裏找到了相同的答案:https://stackoverflow.com/a/46070617/225186 – alfC