class A : public std::vector<int>
{
explicit A()
{
push_back(5);
std::cout << *this[0];
}
}
error: no match for 'operator*' (operand type is 'A')
std::cout << *this[0];'
使用*this[0]
替换at(0)
会使其正常工作。我发现*this[0]
返回类型为A
而不是int
的对象非常奇怪,如at(0)
所做的那样。在这个例子中,它们不应该以相同的方式工作吗?
答案 0 :(得分:3)
错误消息将其丢弃:
points(x, y - beta[1] - c0)
error: no match for 'operator*' (operand type is 'A')
来自哪里? A
是一个this
,从指针中获取对象的方法是取消引用 - 这样就可以A* const
。
你想:
this[0]
std::cout << (*this)[0];
的{{3}}高于取消引用 - 您需要确保operator[]
首先发生。当然,或者,你可以写下这个烂摊子:
*this
但我建议使用括号。