__if_exists-Anweisung
Die __if_exists
Anweisung testet, ob der angegebene Bezeichner vorhanden ist. Wenn der Bezeichner vorhanden ist, wird der angegebene Anweisungsblock ausgeführt.
Syntax
__if_exists ( identifier ) {
statements
};
Parameter
identifier
Der Bezeichner, dessen Vorhandensein Sie überprüfen möchten.
Aussagen
Eine oder mehrere Anweisungen, die ausgeführt werden sollen, wenn der Bezeichner vorhanden ist.
Hinweise
Achtung
Um die zuverlässigsten Ergebnisse zu erzielen, verwenden Sie die __if_exists
Anweisung unter den folgenden Einschränkungen.
Wenden Sie die
__if_exists
Anweisung nur auf einfache Typen und nicht auf Vorlagen an.Wenden Sie die
__if_exists
Anweisung auf Bezeichner innerhalb oder außerhalb einer Klasse an. Wenden Sie die__if_exists
Anweisung nicht auf lokale Variablen an.Verwenden Sie die
__if_exists
Anweisung nur im Textkörper einer Funktion. Außerhalb des Textkörpers einer Funktion kann die__if_exists
Anweisung nur vollständig definierte Typen testen.Wenn Sie auf überladene Funktionen testen, können Sie nicht auf eine bestimmte Form der Überladung testen.
Die Ergänzung zur Anweisung ist die __if_exists
__if_not_exists Anweisung.
Beispiel
Beachten Sie, dass in diesem Beispiel Vorlagen verwendet werden, was nicht empfohlen wird.
// 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;
}
Ausgabe
In X<T>::Dump()
In A::Dump()
In X<T>::Dump()
T::Dump does not exist
g_bFlag = 1
C::f exists
Siehe auch
Auswahlanweisungen
Schlüsselwörter
__if_not_exists-Anweisung
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für