-1
我有一個EntityComponent-System,並且有一個組件應該調用各種其他組件。對於這個例子,我選擇了一個布爾函數結果的簡單組合。C++ Template Variadic - 爲每個模板參數調用一次成員函數
ResultCombinerComponent具有可變參數模板參數,並且對於這些參數中的每一個參數,都應按照給定模板參數的順序調用函數。順序非常重要。
之後將函數調用的結果合併。
在下面的代碼我剛剛更換的部件,我不知道如何實現與僞C++
template<typename... Args>
class ResultCombinerComponent
{
template<typename T>
bool calcSingleResult()
{
return getComponent<T>()->calcResult();
}
bool calcResult()
{
bool result = true;
for (int i = 0; i < sizeof...(Args); i++) // doesn't work
{
if (!calcSingleResult<Args(i)>() // doesn't work
{
result = false;
break;
}
}
return result;
}
}
class A
{
bool calcResult();
}
class B
{
bool calcResult();
}
class C
{
bool calcResult();
}
[這](http://stackoverflow.com/questions/12030538/calling-a-function-for-each-variadic-template-argument -和-一個數組)可以給你一些信息。 – LogicStuff
我已閱讀過這個帖子和其他許多類似帖子,並試圖將其應用於我的特定問題,但無法將其應用於我的特定問題。 – keyboard
你沒有在任何地方使用'...'(參數包擴展)。還有一件事 - 你想用所提供的類型來計算一些東西? ...因爲代碼中沒有實際的實例/對象。 – LogicStuff