2014-01-27 35 views
3

使用我在我的項目中使用下列數據類型的所有數據類型的特殊類:對於我在一個項目

std::vector<std::shared_ptr<float>>; 
std::vector<std::shared_ptr<string>>; 
pair<std::vector<string>,double>; 

這些數據類型重複使用在許多類項目。我想用typedef。我的問題如下: 我可以爲數據類型創建一個類嗎?例如:

class Foo 
{ 
    typedef std::vector<std::shared_ptr<float>> floatVec; 
    typedef std::vector<std::shared_ptr<string>> stringVec; 
    typedef pair<std::vector<string>,double> pairVec; 

}; 

您對這種做法有什麼看法?


正如從我理解一個conlusion:

1- typedef的當一個類被作爲模板類型傳遞喊優選使用(康拉德魯道夫)

2-不濫用shared_ptr的(C++不是Java)確定

+1

我不會把這個類,如果我是你,你可以在一個單獨的.h文件中定義的類型,幷包括文件到處都是你所需要的類型。如果您想更好地組織它們,請使用命名空間。 – Kevin

+0

爲什麼你有指針浮動,字符串*在第一個地方*? –

+0

@John Dibling嗯,因爲我想在運行時加載一個Float值文件? –

回答

3

你可以做到這一點 - 在,它編譯並運行。

爲什麼做你想做的事嗎?這種一般形式似乎沒有目的。你可能試圖使用一個類作爲命名空間?

一般來說,這種尖叫的缺乏對一流的設計思想。你似乎只有幾種沒有明確指定目的的類型,而你顯然是以完全不適當的方式使用(共享)指針。

+0

你的意思是說,我應該在我的設計中達到這個級別,在那裏我創建一個類,特別是類型? –

+0

Shared_prt是因爲我想在運行時加載一個Float值的文件? –

+1

不一定,但爲數據創建新類型通常很簡單且便宜,並且使代碼更易於理解。一般來說,我認爲將typedef(或類型定義)放入類中是沒有意義的,除非該類應該作爲模板類型傳遞。無論如何,'shared_ptr'部分是錯誤的。只需直接使用值。 –

4

您應該使用命名空間來代替:

namespace Foo 

,其餘相同的(只是跳過最後一個分號)。命名空間比你的更適合這種情況。

相關問題