Dev - C++ - no match for "operator[]" (operand types are...)

 
Vista:
sin imagen de perfil
Val: 9
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

no match for "operator[]" (operand types are...)

Publicado por Jorge (5 intervenciones) el 11/12/2019 21:23:38
Buenas tardes.
Estoy escribiendo un programa que tiene que leer de un fichero ciertos datos, guardarlos y hacer algunas modificaciones. El caso es que al intentar meter el dato leído del fichero en un campo de un registro me sale este error ( no match for 'operator[]' (operand types are 'UsoBizi' and 'int') y tras bastante tiempo sigo sin poder solucionarlo. No comprendo muy bien donde está el error y esperaba que me pudieseis ayudar. La parte del código donde me da error es esta (en concreto al final del código, donde pone 'uso[0].idUsuario = identificador;' :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
const int LONG_LINEA = 2000;
const int MAX_IDENTIFICADOR = 15;
const int MAX_USUARIOS = 1000;
struct UsoBizi uso[MAX_USUARIOS];
 
void leerUso(istream& f, UsoBizi& uso){
    int numUsuario = 0;
    int n = 0;
    char linea[LONG_LINEA];
    f.getline(linea,LONG_LINEA);
 
    while(!f.eof()){
      n = 0;
      f.getline(linea,LONG_LINEA);
      char identificador[MAX_IDENTIFICADOR];
 
    for(int i = 0; linea[i] != '-'; i++){
        identificador[n] = linea[i];
        n++;
    }
    identificador[n - 4] = '\0';
    uso[0].idUsuario = identificador;
    }
}

Y los campos del registro que he definido son estos:

1
2
3
4
5
6
7
struct UsoBizi {
 
    char idUsuario[MAX_LONG_LINEA];
    char codEstInicio[MAX_LONG_LINEA];
    char codEstFinal[MAX_LONG_LINEA];
 
};
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

no match for 'operator[]' (operand types are...)

Publicado por Alfil (1444 intervenciones) el 11/12/2019 23:55:53
Fíjate que identificador es un array, y sin embargo escribes:

uso[0].idUsuario = identificador;

sin especificar el índice de identificador, por ejemplo:

uso[0].idUsuario = identificador[0];
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

no match for 'operator[]' (operand types are...)

Publicado por Jorge (5 intervenciones) el 12/12/2019 17:43:03
Comprendo, pero lo que yo intento es copiar todos los caracteres del array identificador en el campo idUsuario del registro, no se si eso es posible. También lo he intentado con strcpy pero me sigue dando el mismo error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

no match for 'operator[]' (operand types are...)

Publicado por Alfil (1444 intervenciones) el 12/12/2019 18:30:40
No es posible, puedes copiar un array en otro si tiene la misma dimensión, pero no puedes copiar en una posición de un array otro array entero por igualdad. Para ello, podrías utilizar un bucle for que recorriera el array y fuera sumando o realizando la operación que creas conveniente en la posición del array destino.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 9
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

no match for "operator[]" (operand types are...)

Publicado por Jorge (5 intervenciones) el 12/12/2019 18:42:47
Te refieres a algo de este tipo?

1
2
3
4
for(int i = 0;identificador[i] != '\0';i++){
 
    uso[0].idUsuario[i] = identificador[i];
}

Con este bucle cada caracter del array identificador se introduce en una posicion del array idUsuario, hasta que ya no quedan más caracteres Había pensado en esto pero el problema de antes no desaparece.
Gracias por las respuestas!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

no match for "operator[]" (operand types are...)

Publicado por Alfil (1444 intervenciones) el 12/12/2019 21:23:21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
struct User {
    char id[10];
} user[10];
 
int main()
{
    char temp[10] = "ABCDEFGHI";
 
    for( int i = 0; i < 10; i++ ) {
        user[0].id[i] = temp[i];
    }
 
    cout << "\n" << user[0].id << endl;
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar