Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
"identifier" : icke-aggregeringar kan inte initieras med en initieringslista
Anmärkningar
Den aggregerade identifieraren initierades felaktigt.
Matriser
Klasser, strukturer och fackföreningar som inte har:
Konstruktörer
Privata eller skyddade medlemmar
Basklasser
Virtuella funktioner
Visual C++ tillåter dessutom inte datatyper i en aggregering som innehåller konstruktorer.
Följande är orsakerna till att C2552 kan utlösas när en aggregatinitiering görs på en typ.
Typen har en eller flera användardefinierade konstruktorer.
Typen har en eller flera icke-statiska, privata datamedlemmar.
Typen har en eller flera virtuella funktioner.
Typen har en basklass.
Typen är en referensklass eller ETT CLR-gränssnitt.
Typen har ett fält av variabel storlek (zero-array) vars element har destructors.
Example
I följande exempel genereras C2552:
// 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);
}