【问题标题】:Array of Classes declaration and manipulation类数组声明和操作
【发布时间】:2017-06-25 12:04:33
【问题描述】:

我希望有人可以帮助解释初始化类数组的正确方法以及如何将元素添加到数组中?

我的代码目前如下所示:

class Person
{
private:
    string surname;
    string forename;
    int age;
public:
    Person() { suraname, forename, age; }
    void getSurname();
    void getForename();
    void getAge();
};

最终,程序会将文件中的行读取到数组中以填充它,但首先我只想能够手动添加,以便我可以看到它正在工作。

因为会有多人,所以我的数组需要是 2D 的吗?

最终我们将使用“getSurname()”遍历数组中的所有姓氏并将它们打印到控制台。

在我的脑海中,我知道添加到数组中会看起来像这样(虽然我不确定这是否是正确的方法)

int main()
{ 
    std::string Person[2][3] = {
      { "Smith", "John", "21" }, 
      { "Farr", "Michael", "35" }
    };
}

如果有人可以帮助解释/提供指导,将不胜感激。

谢谢!

【问题讨论】:

  • 你的构造函数看起来不对。
  • 您认为Person() { suraname, forename, age; } 会做什么?您的意思是在那里传递参数吗?
  • Because there are going to be multiple people, does my array need to be 2D 所以你连数组是什么都不知道?
  • 我知道 Person() 是我的构造函数,尽管我一直对它们有点困惑。我是面向对象的新手,所以我正在努力解决它。
  • 所以创建一个 Person 并打印 getSurname()。

标签: c++ arrays string class


【解决方案1】:

一步一个脚印……

修正这个(因为不正确):

public:
    Person() { suraname, forename, age; }

一定是这样的

public:
    Person(suraname, forename, age):suraname(suraname), forename(forename), age(age) { }

然后将其重命名为更合适的名称

std::string Person[2][3]

喜欢

std::string ArrayOFFieldsOfPerson[2][3] = ...

现在你可以从更容易处理的事情开始,比如

std::string testSurname{"XoceSurname"};
std::string testForename{"XoceForename"};
std::string testAge{"18"};

然后做

int testAgeInt = std::stoi(testAge);
Person somePerson{testSurname, testForename, testAgeInt };

在你正确构造了一个人的实例之后,你可以对一个数组执行以下操作:

Person somePersonArray[k];

然后使用循环填充数组

【讨论】:

  • 太完美了。非常感谢您的解释。
  • 我正在关注您的第二个“更简单”的示例,我只是想知道您如何打印“Person somePerson{testSurname, testForename, testAgeInt };”这一行安慰?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-09
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多