我有一个非模板类,它本身用作另一个类的模板参数。 此类用于抽象某些数据的基础表示。 理想情况下,此类的方法之一应该是整数参数化。
例如: typedef double Price;
enum Side
{
BUY,
SELL
};
struct Book
{
template <Side side>
int getLimit(Price price) const
{
return 0;
}
};
struct Spotter
{
template <typename Book>
Price compute(Price startPrice, const Book& book)
{
int limit = book.getLimit<BUY>(startPrice);
return 0;
}
};
现在用gcc编译时,我得到了 &#34;错误:不匹配&#39;运营商&lt;&#39;在book-&gt; Book :: getLimit&lt; (侧)0U&#34;
它看起来像一个解析错误,好像语法不允许首先写入object.method(args)。
请注意,在我的实际代码中,compute()方法本身由side参数参数化,该参数被转发到getLimit()方法。
有没有办法让这项工作?