C ++静态运算符重载

时间:2009-09-07 18:55:59

标签: c++ static operator-overloading indexing

是否可以在静态上下文中重载C ++类操作符? e.g。

class Class_1{ ... }
int main()
{

    Class_1[val]...

}

4 个答案:

答案 0 :(得分:13)

如果您正在寻找使用内置运算符的元编程:这样的事情是不可能的 - 内置运算符在运行时值上运行,而不是在编译时值上运行。

您可以使用boost::mpl,而不是使用内置运算符,使用其模板,例如at op[]plus<a, b> {{1}等等。

op+

答案 1 :(得分:5)

我不相信这是可能的,虽然我在这方面可能是错的。我想问你为什么要这么做。您可能只需要在整个应用程序中使用一个实例,而不是对类而不是实例执行操作?在这种情况下,您可能应该使用the singleton pattern

答案 2 :(得分:3)

如果你的意思是操作员在课堂上操作,那么这是没有意义的,就像说operator +可以在intdouble上操作。运算符是函数的语法糖,它们在变量(值)上运行,而不是类型。

答案 3 :(得分:1)

不,运营商不能成为班级的静态成员。请改用常规静态函数。