#include<iostream>
using namespace std;
class Test
{
public:
Test(){}
Test(int param):i(param){}
int i;
};
int main()
{
Test obj1(100);
//Test obj2[100](obj1) ; - This doesn't work I know
Test obj3[10] = obj1; //This works
cout<<obj3[9].i<<endl;
return 1;
}
Nel codice precedente Test obj2[100](obj1);
non funziona, ma Test obj3[10] = obj1;
Bad inizializzazione serie vs assegnazione costruttore di copia di inizializzazione
Perché è l'ex supportato, ma quest'ultimo. (Entrambi sarebbero chiamando il costruttore di copia.)
È che il primo non è supportato a causa dei vincoli di implementazione nei compilatori?
Modifica: non sto utilizzando C++ 11. versione gcc 4.8.2 (progetto i686-posix-dwarf-rev3, costruito da MinGW-W64) Qt 5.3.1
Qualsiasi conclusione?
Non funziona perché non è consentito. '()' è inizializzazione del valore a meno che non sia una matrice, quindi il programma è mal formato. –
@Puppy non usa mezzi termini; dicci come ti senti * veramente * sugli array nativi = P – WhozCraig
'Test obj3 [10] = obj1; // Questo funziona '- davvero? clang 3.5 si diffonde ovunque a prescindere dalla modalità (C++ 11 o altro). – WhozCraig