4
我試圖使用std ::轉換與std :: bind來簡化循環。這裏有一些代碼:如何使用通過引用傳遞的抽象類使用綁定
class ITest
{
public:
virtual CPrueba Prueba(double p, double d = 0)const = 0;
};
void foo(const ITest& test)
{
std::vector<double> v;
std::vector<CPrueba> vRes;
// ...
// ...
std::transform(v.begin(), v.end(), back_inserter(vRes),
bind(&ITest::Prueba, test, _1, 0));
//...
}
這不會編譯。
我使用VS2008 SP1,並且我收到了很多模板錯誤,我不明白,所以I've tried in ideone(gcc 4.7.2)。在那裏我有一些更可讀的錯誤,我已經斷定它必須處理ITest被抽象化。
但我試過改變我如何通過測試對象,如果我這樣做by pointer, it works。
那麼有什麼我可以用來保持函數簽名,仍然使用轉換綁定,而不是循環?
謝謝!不過,我的編譯器似乎並不喜歡ref版本。 – MikMik 2013-03-27 10:52:57