Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
'identifier' : niet-aggregerende objecten kunnen niet worden geïnitialiseerd met een initializer-lijst
Opmerkingen
De aggregatie-ID is onjuist geïnitialiseerd.
Aggregaties worden gedefinieerd als:
Reeksen
Klassen, structuren en unions die niet beschikken over:
Constructeurs
Privé- of beveiligde leden
Basisklassen
Virtuele functies
Bovendien staat Visual C++ geen gegevenstypen toe in een aggregaties die constructors bevat.
Hieronder ziet u de redenen waarom C2552 kan worden geactiveerd wanneer een aggregaatinitialisatie wordt uitgevoerd voor een type.
Het type heeft een of meer door de gebruiker gedefinieerde constructors.
Het type heeft een of meer niet-statische, privé-gegevensvelden.
Het type heeft een of meer virtuele functies.
Het type heeft een basisklasse.
Het type is een ref-klasse of CLR-interface.
Het type heeft een niet-vaste dimensiematrix (nulmatrix) waarvan de elementen destructors hebben.
Example
In het volgende voorbeeld wordt C2552 gegenereerd:
// C2552.cpp
// compile with: /clr
#include <string>
using namespace std;
struct Pair_Incorrect {
private:
string m_name;
double m_val;
};
struct Pair_Correct1 {
public:
Pair_Correct1(string name, double val)
: m_name(name), m_val(val) {}
private:
string m_name;
double m_val;
};
struct Pair_Correct2 {
public:
string m_name;
double m_val;
};
int main() {
// To fix, add a constructor to this class and use it for
// initializing the data members, see Pair_Correct1 (below)
// or
// Do not have any private or protected non-static data members,
// see Pair_Correct2 (below). Pair_Correct2 is not recommended in
// case your object model requires some non-static data members to
// be private or protected
string name("John");
Pair_Incorrect pair1 = { name, 0.0 }; // C2552
// initialize a CLR immutable value type that has a constructor
System::DateTime dt = {2001, 4, 12, 22, 16, 49, 844}; // C2552
Pair_Correct1 pair2( name, 0.0 );
Pair_Correct1 pair3 = Pair_Correct1( name, 0.0 );
Pair_Correct2 pair4 = { name, 0.0 };
System::DateTime dt2(2001, 4, 12, 22, 16, 49, 844);
}