我想在 C++ 中定义一个构造 a[] = 1
,它允许我附加到自定义数组对象,而不是使用类似 push_back()
的东西。
是否可以通过 C++ 中的某些运算符重载来实现此目的?
我正在考虑 []
返回一个重载 =
的引用。然而operator [](void)
是无效的,但也许有什么技巧?
最佳答案
我的强烈建议是只创建一个 push_back
方法。这是惯用的,人们现在做什么。任何其他技巧都会让用户感到惊讶。
但是如果你坚持这里有一些你可以做的技巧:
struct To_back {};
constexpr To_back to_back;
struct X
{
auto operator[](To_back) -> Back_inserter_proxy
{
return Back_inserter_proxy{*this};
}
};
X x;
x[to_back] = 24;
或:
struct X
{
auto operator%=(int elem)
{
// push back here
}
// or
auto operator<<(int elem)
{
// push back here
}
};
X x
x %= 24;
// or
x << 24;
但我重申:我强烈建议不要使用这些技巧,尤其是因为有一种简单的惯用方法可以做到这一点:push_back
。
关于c++ - 通过重载 operator[] 附加到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46377725/