Mi objetivo es una clase como:C++ definir struct miembro de la clase y devolverlo en una función miembro
class UserInformation
{
public:
userInfo getInfo(int userId);
private:
struct userInfo
{
int repu, quesCount, ansCount;
};
userInfo infoStruct;
int date;
};
userInfo UserInformation::getInfo(int userId)
{
infoStruct.repu = 1000;
return infoStruct;
}
pero el compilador da error que en Defintion de la función pública getInfo(int)
el tipo de retorno userInfo
no es un tipo nombre.
¿Por qué necesitamos el calificador 'UserInfomation' para' userInfo. ¿No debería el compilador comprobar por defecto el namescope de 'UserInformation'? – anaken78
@ anaken78 Lo que usted, yo o cualquier otra persona cree que un compilador compatible debe hacer es irrelevante. Esto es lo que ** hace ** hacer. La clase no está en el alcance hasta que se abre la lista de argumentos de la función, por lo que los nombres no se pueden buscar sin calificar. Estoy seguro de que el razonamiento detrás de esto, en términos de análisis y otras cosas, se ha discutido ampliamente en otro lado, si quieres buscarlo. O simplemente use un tipo de devolución final: 'autoInformación de usuario :: getInfo (int userId) -> userInfo' (por cierto, estas son algunas malas opciones de nombres). La clase y sus miembros están dentro del alcance cuando el tipo de devolución se declara en esa posición. –