2016-02-12 37 views
0

而不是做這個,有沒有辦法一次又一次地在C++中的參數中輸入相同的數據類型?

void myFunc(double, double, double, double, double, double, double); 

有沒有辦法來限制相同的數據類型的用途和苗條下來?我知道有可能沒有更簡單的方法來做到這一點,但如果有的話,這將是很好的。

+3

如果參數是相關的,那麼如果你想傳遞數據,你可以將它們綁定到結構體(POD)中,或者如果你想操作它們,可以將它們綁定到類中。 – CreativeMind

回答

2

如果是聲明函數時,可以使用variadic template function。也許不會少打字,但更靈活。這返回兩倍。對於C++ 11和更高版本。

double myFunc() { 
    return 0.0; 
} 

template<typename H, typename ...T> double myFunc(H head, T... tail) { 
    head += myFunc(tail...); 
    return head; 
}; 

int main(int argc, char const *argv[]) 
{ 
    auto a = myFunc(); 
    std::cout << "a: " << a << std::endl; 
    auto b = myFunc(1.0, 1.1, 1.2, 1.3); 
    std::cout << "b: " << b << std::endl; 
    return 0; 
} 

輸出

一個:0
B:4.6

+0

你至少應該展示如何解開參數... – DarioP

+0

是的,赦免。更新答案。 – kometen

2

不,沒有。您必須明確列出所有參數,並且沒有爲連續參數重複相同類型的簡寫。

如果一個函數有很多參數,您可能需要更改它以將一個對象作爲參數。或者如果他們都是同一時間,你可以使用一個數組。

1

您可以使用vectorlist甚至array將它們分組並將它作爲參數傳遞。但是,您應該確定數據的順序,以便您可以在該方法中處理正確的數據。

0

沒有,沒有,這是強類型的編程語言之美。

相關問題