9
Come è possibile utilizzare sia lo scalare che l'array nel puntatore intelligente?Utilizzo di entrambi scalare e matrice nel puntatore intelligente
Il vecchio modo di usare new e delete puntatore:
int *p;
if (useScalar) {
p = new int;
} else {
p = new int[10];
}
if (useScalar) {
delete p;
} else {
delete[] p;
}
In puntatore intelligente, devo usare 2 punti di riferimento per ogni puntatore scalari e la matrice:
std::unique_ptr<int> p1(new int);
std::unique_ptr<int[]> p2(new int[10]);
Come posso diminuire a utilizzare solo 1 puntatore intelligente?
È possibile scrivere il proprio puntatore intelligente che memorizza un valore bool useScalar per determinare se utilizzare 'delete' o' delete [] '. – jotik
Puoi allocare 'p = new int [1]' e fingere che sia un puntatore a scalare? – dasblinkenlight
Potresti usare 'int [1]' come scalare, forse semplifica anche altre aree del tuo programma ... – alain