Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
'id': is geen klasse- of naamruimtenaam
Opmerkingen
Voor de taalsyntaxis is hier een klasse-, structuur-, samenvoeg- of naamruimtenaam vereist.
Deze fout kan optreden wanneer u een naam gebruikt die niet is gedeclareerd als een klasse, structuur, samenvoeging of naamruimte voor een bereikoperator. U kunt dit probleem oplossen door de naam te declareren of de header op te nemen die de naam declareert voordat deze wordt gebruikt.
C2653 is ook mogelijk als u probeert een samengestelde naamruimte te definiëren, een naamruimte die een of meer bereik-geneste naamruimtenamen bevat. Samengestelde naamruimtedefinities zijn niet toegestaan in C++ vóór C++17. Samengestelde naamruimten worden ondersteund vanaf Visual Studio 2015 Update 3 wanneer u de /std:c++latest compileroptie opgeeft. Vanaf Visual Studio 2017 versie 15.5 ondersteunt de compiler samengestelde naamruimtedefinities wanneer de /std:c++17 optie of hoger is opgegeven.
Voorbeelden
In dit voorbeeld wordt C2653 gegenereerd omdat een bereiknaam wordt gebruikt, maar niet gedeclareerd. De compiler verwacht een klasse-, structuur-, samenvoeg- of naamruimtenaam vóór een bereikoperator (::).
// C2653.cpp
// compile with: /c
class yy {
void func1(int i);
};
void xx::func1(int m) {} // C2653, xx is not declared
void yy::func1(int m) {} // OK
In code die niet is gecompileerd voor C++17- of hogerstandaarden, moeten geneste naamruimten een expliciete naamruimtedeclaratie op elk nestniveau gebruiken:
// C2653b.cpp
namespace a::b {int i;} // C2653 prior to Visual Studio 2015 Update 3,
// C2429 thereafter. Use /std:c++17 or /std:c++latest to fix.
namespace a { // Use this form for conformant code under /std:c++14 (the default)
namespace b { // or when using compilers before Visual Studio 2015 update 3.
int i;
}
}
int main() {
a::b::i = 2;
}