是否可以在静态上下文中重载C ++类操作符? e.g。
class Class_1{ ... }
int main()
{
Class_1[val]...
}
答案 0 :(得分:13)
如果您正在寻找使用内置运算符的元编程:这样的事情是不可能的 - 内置运算符在运行时值上运行,而不是在编译时值上运行。
您可以使用boost::mpl
,而不是使用内置运算符,使用其模板,例如at
op[]
,plus<a, b>
{{1}等等。
op+
答案 1 :(得分:5)
我不相信这是可能的,虽然我在这方面可能是错的。我想问你为什么要这么做。您可能只需要在整个应用程序中使用一个实例,而不是对类而不是实例执行操作?在这种情况下,您可能应该使用the singleton pattern。
答案 2 :(得分:3)
如果你的意思是操作员在课堂上操作,那么这是没有意义的,就像说operator +
可以在int
或double
上操作。运算符是函数的语法糖,它们在变量(值)上运行,而不是类型。
答案 3 :(得分:1)
不,运营商不能成为班级的静态成员。请改用常规静态函数。