我在我的代码中使用了新的 [[deprecated("message")]] 属性。我有一个具有两个构造函数的类,其中一个应该被标记为已弃用(显然是简化的,并且可能有语法错误):
class MyClass
{
public:
// good constructor
MyClass(int someNumber): _someNumber(someNumber) {}
[[deprecated("Use MyClass(int) instead")]]
MyClass(const char* someStr): _someNumber(atoi(someStr)) {}
private:
int _someNumber;
}
Visual Studio 提示“属性 'deprecated("Use MyClass(int) instead")' 不能在此上下文中应用。
有没有办法在 Visual Studio 2015 中弃用构造函数,以便在任何地方使用它时都会收到警告?
最佳答案
将参数标记为已弃用:
MyClass([[deprecated]]const char* someStr){}
或者:
MyClass([[deprecated("Use MyClass(int) instead")]]const char* someStr){}
或使用 __declspec(deprecated) :
__declspec(deprecated("** Use MyClass(int) instead **"))
MyClass(const char* someStr) : _someNumber(atoi(someStr)) {}
此外,根据您的更新版本(第 3 号),您可能会遇到 this bug 。
关于c++ - 在 Visual Studio C++ 中弃用单个构造函数的正确语法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46018977/