In diesem question diskutiert wurde, warum eine private Art mit auto
aussetzt:Einen privaten Typ mit Auto ausstellen: Wo kann es nützlich sein?
#include <iostream>
using namespace std;
class Base {
class PrivateClass {
public:
void bar() { cout << "PrivateClass" << endl; }
};
public:
PrivateClass foo() {
PrivateClass a;
return a;
}
};
int main() {
Base b;
auto p = b.foo();
p.bar();
return 0;
}
ist völlig in Ordnung, durch den Standard 11 C++. Was ich immer noch nicht verstehe ist, wie dieses Idiom in einer realen Anwendung nützlich sein könnte. Gibt es Probleme, bei denen dieses Idiom effektiv verwendet werden kann, oder es sollte als eine "kuriose" Nebenwirkung des Keywords betrachtet werden?
Ich denke nicht, dass dies wirklich die Frage beantwortet. Es ist eine gute Antwort auf eine andere Frage, die lautet: "Was ist' auto'? " –
Ich denke, es beantwortet die Frage. Der interne Typname kann privat gehalten werden, während der Client mit Objekten dieses Typs arbeiten kann. –
@Lightness Rennen im Orbit, ich bin mir nicht sicher, warum Sie denken, dass dies die Frage nicht beantwortet. Er möchte wissen, warum jemand 'auto' verwendet, um einen privaten Typ zu speichern, der von einer Funktion zurückgegeben wird. Die Antwort liegt darin, dass auf diese Weise der private Typ in der öffentlichen API nicht angegeben werden kann. –