次の方法で共有


コンパイラ エラー C2885

'class::identifier': 非クラス スコープでは有効な使用宣言ではありません

using 宣言を正しく使用しませんでした。

このエラーは、Visual Studio 2005 で行われたコンパイラの準拠作業の結果として生成される可能性があります。入れ子になった型に対して using 宣言を行うことは、有効ではなくなりました。入れ子になった型への各参照を明示的に修飾するか、型を名前空間に配置するか、typedef を作成する必要があります。

次の例では C2885 が生成されます。

// C2885.cpp
namespace MyNamespace {
   class X1 {};
}

struct MyStruct {
   struct X1 {
      int i;
   };
};

int main () {
   using MyStruct::X1;   // C2885

   // OK
   using MyNamespace::X1;
   X1 myX1;

   MyStruct::X1 X12;

   typedef MyStruct::X1 abc;
   abc X13;
   X13.i = 9;
}

クラス メンバーで using キーワードを使用する場合、C++ では、そのメンバーを別のクラス (派生クラス) 内で定義する必要があります。

次の例では C2885 が生成されます。

// C2885_b.cpp
// compile with: /c
class A {
public:
   int i;
};

void z() {
   using A::i;   // C2885 not in a class
}

class B : public A {
public:
   using A::i;
};