Megosztás a következőn keresztül:


__if_exists utasítás

Az __if_exists utasítás ellenőrzi, hogy létezik-e a megadott azonosító. Ha az azonosító létezik, a rendszer végrehajtja a megadott utasításblokkot.

Szemantika

__if_exists ( identifier ) {
statements
};

Paraméterek

azonosító
Az az azonosító, amelynek létezését tesztelni szeretné.

Nyilatkozatok
Egy vagy több utasítás végrehajtása, ha létezik azonosító .

Megjegyzések

Figyelmeztetés

A legmegbízhatóbb eredmények eléréséhez használja az __if_exists alábbi korlátozások szerinti utasítást.

  • Alkalmazza az utasítást __if_exists csak egyszerű típusokra, nem sablonokra.

  • Alkalmazza az utasítást az __if_exists osztályon belüli vagy kívüli azonosítókra. Ne alkalmazza az utasítást a __if_exists helyi változókra.

  • Az utasítást __if_exists csak egy függvény törzsében használja. A függvény törzsén kívül az __if_exists utasítás csak teljesen definiált típusokat tesztelhet.

  • Ha túlterhelt függvényeket tesztel, nem tesztelheti a túlterhelés egy adott formáját.

Az utasítás kiegészítése a __if_exists__if_not_exists utasítás.

példa

Figyelje meg, hogy ez a példa sablonokat használ, ami nem ajánlott.

// the__if_exists_statement.cpp
// compile with: /EHsc
#include <iostream>

template<typename T>
class X : public T {
public:
   void Dump() {
      std::cout << "In X<T>::Dump()" << std::endl;

      __if_exists(T::Dump) {
         T::Dump();
      }

      __if_not_exists(T::Dump) {
         std::cout << "T::Dump does not exist" << std::endl;
      }
   }
};

class A {
public:
   void Dump() {
      std::cout << "In A::Dump()" << std::endl;
   }
};

class B {};

bool g_bFlag = true;

class C {
public:
   void f(int);
   void f(double);
};

int main() {
   X<A> x1;
   X<B> x2;

   x1.Dump();
   x2.Dump();

   __if_exists(::g_bFlag) {
      std::cout << "g_bFlag = " << g_bFlag << std::endl;
   }

   __if_exists(C::f) {
      std::cout << "C::f exists" << std::endl;
   }

   return 0;
}

Kimenet

In X<T>::Dump()
In A::Dump()
In X<T>::Dump()
T::Dump does not exist
g_bFlag = 1
C::f exists

Lásd még

Kijelölési utasítások
Kulcsszavak
__if_not_exists utasítás