簡體   English   中英

C ++未知變量類型。 我應該使用模板嗎?

[英]C++ unknown variable type. Should I use template?

我正在嘗試創建一個類,該類將解析C ++中的文件。 但是,該文件實際上位於2個文件中,即標頭和原始數據。

標頭包含原始數據的數據類型(可以是int,double,float等)。 我想在我的班級中創建一個變量來存儲原始數據。 無論數據類型如何,處理都是一樣的。

我應該使用模板來執行此操作嗎? 僅對1個變量使用模板化類是不是矯kill過正?

謝謝。

使用函數重載呢? 您說處理是一樣的,所以...我想可以。 有時我會用它們來做這種事情。

例:

標頭

class MyClass {
public:
    void function(int x);
    void function(double x);
    void function(string x);
    void function(char x);
};

編譯器將知道要使用的功能,具體取決於您要發送(傳遞)給它的值。

模板當然可以在這里為您提供幫助。 它們提供了一種減少重復處理的方法,您說對於所有類型都是相同的。

當然,是否“應該”使用它們是一個更困難的問題,是否過高也是如此-兩者都是意見問題,但是通常的使用表明僅使用一個變量將不會成為決定該問題的因素。

如果需要將包含不同類型的文件的內容處理到同一容器中,或者一個文件可以包含多個類型,那么boost變體可能會更合適。

由於您是從文件中讀取類型的,因此這些類型在運行時是已知的,但是由於選項列表在編譯時是已知的,因此您可以檢查文件中的類型並傳遞該類型。

if(typeFromFile == headerValueForint)
{
    processFile<int>();
}
else if (typeFromFile == headerValueFordouble)
{
    processFile<double>();
}

但是,由於您列出的所有類型都是數字類型(並且我想知道如果存在其他任何非數字類型,處理的方式實際上是一樣的),您可以決定將所有值都讀為雙精度-進行適當的范圍檢查。 它可能占用更多的內存,但是其影響取決於處理實際涉及的內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM