-1

次のコードが機能しない理由を誰か説明できますか? 名前空間、クラス、および識別子がどのように組み合わされるかを説明するリソースが見つかりません。my_class::my_member を実行すると、my_class:: の部分は名前空間ではありませんか? それは何ですか?

#include <iostream>

class my_class {
    public:
            static void my_member() {
                    std::cout << "worked" << std::endl;
            }
};

int main() {

    using namespace my_class; // error: 'my_class' is not a namespace-name

    my_member(); // error: 'my_member' was not declared in this scope

    my_class::my_member(); // works
}

より一般的な質問として、毎回 my_class:: namespace/ identifier/ を実行せずに静的クラス メンバーを参照できる方法はありますか?

それ以外の

my_class::my_member_1
my_class::my_member_2

ただ欲しい

my_member_1
my_member_2

これは可能ですか?ありがとうございました。

4

3 に答える 3

1

これは可能ですか?

はい、間接的に。のスコープで動作するメソッドを作成すると、my_class必要な動作を得ることができます。

#include <iostream>

class my_class {
    public:
            static void my_member() {
                    std::cout << "worked" << std::endl;
            }
            static int my_main();
};

int my_class::my_main() {

    my_member(); // no error

    my_class::my_member(); // works too
    return EXIT_SUCCESS;
}

int main() {
     my_class::my_main();
}
于 2013-09-18T13:29:23.863 に答える