2017-09-02 4 views
2

私は自分のコードで新しい[[deprecated( "message")]]属性を使用しています。Visual Studio C++で単一のコンストラクタを非推奨にする正しい構文は何ですか?

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が使用MyClassの(int型)「(属性が」非推奨」と文句を言います:私は非推奨としてマークされるべき一つは2つのコンストラクタ、(明らかに簡略化され、そしておそらく構文エラーを持つ)を持つクラスを持っています代わりには ")」は、このコンテキストでは適用できない

が、それはどこでも使用されている場合、私は警告を受けるようにVisual Studioの2015年には、コンストラクタを廃止する方法がある

+0

それは管理されたC++ですか? – orhtej2

+0

@ orhtej2 Regular C++ – Ben

答えて

3

マーク・パラメータは非推奨として:。?

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が発生している可能性があります。

関連する問題