Bien... El problema es que ids no recibe el valor creado en método(int *id). Has pasado el parámetro por valor. Para que cambie el valor de ids, tienes tres maneras:
1) Pasar el parámetro por referencia
void metodo(int* &id);
2) Que metodo devuelva un valor
int* metodo();
3) Pasar un puntero a un puntero
void metodo(int** pid);
1) Por referencia:
Código:
void metodo(int* &id)
{
//Como tu funcion....
}
//Uso
int *ids;
metodo(ids);
// Ahora ids apunta a un array de enteros;
2) Devolviendo el valor
Código:
int* metodo()
{
int *id = new id[N];
.
.
.
return id;
}
//Uso
int* ids = metodo();
// Ahora ids apunta a un array de enteros;
3) Por puntero
Código:
void metodo(int**pid)
{
int *id = new id[N];
*pid = id;
.
.
.
}
//Uso
int *ids;
metodo(&ids);
// Ahora ids apunta a un array de enteros;
En general, para pasar una variable por referencia la funcion la declaras asi:
Código:
tipo funcion(tipo &Variable);
Todos estos métodos para pasar variables y que la función cambie el valor de dichas variables, los puedes aplicar a cualquier tipo de datos que tengas.
Saludos.