私は大学で C++ を学んでいるので C++ の初心者で、問題があります。かなり簡単に実行できるはずのプロジェクトがありますが、いくつかの問題が発生しているようです。名前、名 (char* の配列に複数の名前を入れることができるため、char** になる可能性があるため、これは私の大きな問題です) と年齢の 3 つの引数を使用して、Person クラスを実装する必要があります。私の先生は、私の Person クラスを使用していくつかのタイプの Person を作成する testPerson.cc ファイルをくれました。私の問題は、コンストラクターを作成するときです。これは、いくつかのケースを管理する必要があるためです。たとえば、人の名が 1 つしかない場合などです。
const Personne lea ("Tralala", "Lea", 45);
または、人には複数のファーストネームがあります:
const char* prenoms1[] = {"Marcel", "Firmin", "Gaston", 0};
const Personne marcel ("Meharcele", prenoms1, 78);
name(char*)、firstname(char**)、age(int) の 3 つの属性が必要であることは確かです。
これは、先生が私にくれたファイルのスニペットです (Person クラスを作成するときに尊重する必要があります)。
int main () {
cout << "We create the next persons:\n";
// version of constructor with several names:
const char* prenoms1[] = {"Marcel", "Firmin", "Gaston", 0};
const Personne marcel ("Meharcele", prenoms1, 78);
// version of constructor with only one name:
const Personne lea ("Tralala", "Lea", 45);
ご覧のとおり、fname が 1 つだけの場合、または複数の fname がある場合には、いくつかのコンストラクターが必要です。これが私のクラスです。
#include "personne.h"
Personne::Personne(const char* name, const char** fnames, int a) {
nom = name;
prenom = fnames;
age = a;
}
Personne::Personne(const char* name, const char* fname, int a) {
nom = name;
prenom = fname; //here I have a problem, since the attribute prenom is of type char**
age = a;
}
void Personne::setAge(int& a) {
age = a;
}
void Personne::setNom(const char* name) {
nom = name;
}
void Personne::setPrenoms(const char** fnames) {
}
int Personne::getAge() const {
return age;
}
char* Personne::getNom() const {
return nom;
}
char** Personne::getPrenoms() const {
return prenom;
}
私は解決策について何時間もかけて考え、たくさんグーグルで検索しました(宿題をしたので)、正しい解決策を実装する方法がわからないだけです。