J'ai lu sur les objets POD en C++. Je veux avoir une structure POD à écrire dans un fichier. Donc, il devrait avoir seulement des données publiques sans les ctors/dtors etc. Mais pour autant que je sache, il peut avoir une fonction statique. Alors, est-ce que je peux employer "l'idiome nommé par constructeur" ici? J'ai besoin d'initialisation dynamique, mais je ne veux pas reproduire les arguments de vérification à chaque initialisation struct Voici un exemple simple (il est juste simple, exemple, pas un code de travail):C++ initialisation POD
struct A
{
int day;
int mouth;
int year;
static A MakeA(const int day, const int month, const int year)
{
// some simple arguments chech
if (!(day >= 1 && day <= 31) || !(month >=1 && month <=12) || !(year <= 2010))
throw std::exception();
A result;
result.day = day;
result.month = month;
result.year = year;
return result;
}
};
J'ai donc quelques-uns une sorte de constructeur et une structure POD que je peux simplement écrire dans un fichier? C'est correct?
Mieux vaut utiliser std :: runtime_error Ensuite, vous pouvez ajouter un message d'erreur. –
Pourquoi voulez-vous une structure POD pour écrire dans un fichier? Ceci est intrinsèquement non portable. Il est beaucoup plus simple d'écrire les opérateurs de flux appropriés. –
Une structure ou une classe contenant des fonctions membres de tout type autre que virtuel peut toujours être écrite dans un fichier; Je ne comprends pas ce que vous pensez que le problème est avec ça? Tant qu'il s'agit d'un type de données composite "plat" (c'est-à-dire, pas de pointeurs vers des données détenues hors de la classe), et pas de fonctions virtuelles. Les fonctions membres ordinaires ne contribuent pas à la taille ou à la constitution de l'objet. – Clifford