Ich weiß, dass wir nicht erklären können, dass ein static
Member-Variable innerhalb einer lokalen Klasse... aber der Grund dafür ist nicht klar.
Kann mir das bitte jemand erklären?
Und warum können wir nicht auf eine nicht static
Variable, die innerhalb der Funktion definiert wurde, in der die lokale Klasse definiert wurde, direkt in den Mitgliedsfunktionen der lokalen Klasse?
In dem unten angegebenen Code:
int main(int argc, char *argv[])
{
static size_t staticValue = 0;
class Local
{
int d_argc; // non-static data members OK
public:
enum // enums OK
{
value = 5
};
Local(int argc) // constructors and member functions OK
: // in-class implementation required
d_argc(argc)
{
// global data: accessible
cout << "Local constructor\n";
// static function variables: accessible
staticValue += 5;
}
static void hello() // static member functions: OK
{
cout << "hello world\n";
}
};
Local::hello(); // call Local static member
Local loc(argc); // define object of a local class.
return 0;
}
Statische Variable staticValue
direkt zugänglich ist, während auf der anderen Seite die argc
Argument von main
ist nicht....