【发布时间】:2019-07-20 01:52:57
【问题描述】:
我正在尝试为Exponent 类创建一个自定义运算符operator ""_exp,我可以像这样调用该运算符:
std::cout << 10.5 * 2._exp << '\n';
我剩下的代码:
struct Exponent
{
long double value;
};
Exponent operator ""_exp(long double exponent)
{
return exponent;
}
我正在使用 Visual Studio 10 编译器,我收到 C2883 错误:
Error C2833: 'operator string' is not a recognized operator or type
我试过了:
我找到了可能的用户定义运算符列表,但找不到operator ""。 https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/ds533389(v%3dvs.100)
问题:
有人可以告诉我在 Visual Studio 2010 中是否可以使用 operator ""_exp"?或者也许还有其他方法可以实现这一点?
【问题讨论】:
-
10.5 ** 2._expC++ 中没有operator** -
@GuillaumeRacicot - 但是您可以使用一元
operator *编写一个类型,该类型返回实现二进制*的类型。 -
如果您想要完全支持 C++11 功能,您需要更新您的 Visual Studio。
-
我需要
Exponent a = 123_exp;。你说的是同一个问题吗? -
它被称为“用户定义的文字”。供应商提供了相当完整的功能支持列表en.cppreference.com/w/cpp/compiler_support - IIUC VS12 也不支持它。
标签: c++ c++11 visual-studio-2010 visual-c++ operator-overloading