C++ 11では静的メソッドのみを持ち、インスタンス化または継承することができないクラスという "静的クラス"を作成したかったのです。コンパイラはデフォルトでもコピーコンストラクタどちらが作成されます。この方法では、コピーコンストラクタを "削除"することでC++ 11クラスのインスタンス化を防止する
class Foo final {
public:
static void methodA(...);
static int methodB(...);
Foo(const Foo&) = delete;
};
: は、次の解決策を考え出しました。 Visual StudioのIntelliSenseは、Foo(
と入力したときにのいずれかのコンストラクタが自動完了しないため、これを確認します。
私は、このソリューションがデフォルトのコンストラクタをprivateにする「一般的な」アプローチよりも望ましいかどうか疑問に思っています。賛否両論はありますか?あなたがやりたいだろう(@ jamesdlinさんのコメントどおり)、ジョブの間違ったツール、namespace
を使用しているよう
代わりに名前空間を使用してみませんか? – jamesdlin
ええ、これまでクラスの機能を使用していない場合は、クラスを作成していません。名前空間を作成しています。 – tadman
コンストラクタを非公開にすることは、deleteキーワードなしでできることです。エフェクトは同じで、コードは生成されません。私は新しい構文を使うつもりです。なぜならそれは読みやすいからです。 –