当前位置: 首页 > 知识库问答 >
问题:

从对象数组打印字符串对象

郜联
2023-03-14

null

我想打印数组中对象的名称,还有第一个数组的每个元素所指向的对象。但是,printFriends()方法不会接受我对所使用的字符串变量使用点运算符。请参见下面的printFriends()方法。

编译器-G++(Ubuntu 5.4.0-6Ubuntu116.04.5)5.4.0。Vim文本编辑器。下面找到错误报告。

个人。h

class Person {
private:
  Person **friends = NULL;
  int friend_count = 0; 
  int friend_capacity = 0;
  std::string name;

public: 
  Person(std::string n) {
    friends = new Person*[100];
    friend_capacity = 100;
    for ( int i = 0; i < friend_capacity; i++ )
      friends[i] = NULL;
    name = n;
  }



void growFriends() {
  Person **tmp = friends; //Keep up with the old list
  int newSize = friend_capacity * 2; //We will double the size of the list

  friends = new Person*[newSize]; //Make a new list twice the size of original

  for (int i = 0; i < friend_capacity; i++) {
    //Copy the old list of friends to the new list.
    friends[i] = tmp[i];
  }

  delete[] tmp;  //delete the old list of friends
  friend_capacity = newSize; //update the friend count
}

void printFriends() {
  for ( int i = 0; i < friend_count; i++ )
    std::cout << friends[i].name << std::endl;
}



/*
void addFriend(const Person &obj) {
  Person **tmp = friends;
//    Person f = new std::string(obj);   

  for (int i = 0; i < friend_capacity; i++)
    friends[friend_count + 1] + obj; 

  friend_count = friend_count + 1; 
}

*/

};

Person-test.cpp

#include<iostream>
#include"Person.h"
int main() {

Person p1("Shawn");
p1.printFriends(); 

}   

G++--std=C++11 person-test.cpp-O p

在person-test.cpp:2:0:Person.h包含的文件中:在成员函数void Person::printFriends():Person.h:46:31:错误:请求成员名称In(((Person)this)-&>Person::Friends+((sizetype)(((LongUnsignedInt)i)*8UL))),它是指针类型的Person*(可能您打算使用-&>?)std::cout<<;Friendsi.Name<<;std::endl;

这个错误信息非常清晰,我理解了几种删除错误的方法。一个是使用箭头表示法,因为我确实使用了一个指针。然而,这会导致分段错误。

我想通过遍历数组的元素来打印数组中的对象。我怎样才能简单地完成这件事呢?在我的程序中,使用点表示法是不起作用的,如上面显示的错误消息,尽管我希望访问字符串来打印对象数组中的每个名称,以及从第一个对象数组中指向的每个对象数组元素。

共有1个答案

乜业
2023-03-14

是指针数组;所以 是一个指针;您需要“取消引用”它才能进入成员字段:

的内容如下:

Person* friendI = friends[i];
std::cout << friendI.name << std::endl;

但是您希望“通过” 指针;所以它必须是:

std::cout << friendI->name << std::endl;

或者(没有临时变量):

std::cout << friends[i]->name << std::endl;
 类似资料:
  • 问题内容: 我从mysql数据库获取ID和类别名称。 当我警告结果时,我得到: (这是对象吗?) 我如何打印这样的结果: 丹斯基 M \ u0119skie M \ u0119ski-编码错误。应该是 Męskie 。我该如何更改? 问题答案:

  • 我有一个简短的问题 我有飞行、水上课程和动物课程 如果我只想打印出动物对象数组中的飞行物体 做这样的事安全吗 或 执行此操作并重写toString方法 我是java新手,所以我甚至不确定这两个是否正确。所以欢迎任何帮助 谢谢你的帮助 编辑- 对不起,模棱两可的问题这是我问题的一个例子 我可以做输出 = A.toString() 来获取对象字符串还是我必须做 并重写toString方法以打印出类和示

  • 使用 Photoshop,您可以打印任何兼容的 3D 模型,而无需担心 3D 打印机的限制。在准备打印时,Photoshop 会自动使 3D 模型防水。Photoshop 还会生成必要的支撑结构(支架和底座),以确保您的 3D 打印能够成功完成。 准备打印 3D 对象 选择“窗口”>“工作区”>“3D”以切换到 3D 工作区。 在 Photoshop 中打开 3D 模型。如果需要,请在打开 3D

  • 问题内容: 问题:有没有办法使用字符串在python中 创建函数对象 ? 信息:我正在一个项目中,该项目将数据存储在sqlite3服务器后端中。没什么可疯狂的。DAL类通常是通过代码生成来完成的,因为代码是如此平凡。但这给了我一个主意。在python中找不到属性时,如果定义函数,它将在错误之前调用该函数。因此,我通过解析器和逻辑树来计算它的方式可以动态生成第一次调用时所需的代码,然后将函数对象另存

  • 问题内容: 谁能从此链接http://www.javatpoint.com/corejava-interview- questions-3 解释问题87和89 87)在下面的代码中将创建多少个对象? 答案是:只有一个物体 89)在下面的代码中将创建多少个对象? 答案是:两个对象,一个在字符串常量池中,另一个在非池(堆)中。 问题答案: 尽管是用Java编写的类,但它是一种与JVM有特殊关系的特殊类

  • 字符串的扩展 ES6中的字符串扩展,用得少,而且逻辑相对简单。如下: includes(str):判断是否包含指定的字符串 startsWith(str):判断是否以指定字符串开头 endsWith(str):判断是否以指定字符串结尾 repeat(count):重复指定次数 举例如下: let str = 'abcdefg'; console.log(str.includes(

  • 我有一个JavaScript对象数组: 如何在JavaScript中按照的值对它们进行排序? 我知道,但它似乎只适用于字符串和数字。是否需要向对象添加方法?

  • 问题内容: 要在Python中打印字符串和数字,除了做类似的事情外,还有其他方法: 问题答案: 在 不带括号的情况下 使用 print函数 可用于旧版本的Python,但 Python3不再支持该功能 ,因此您必须将参数放在括号内。但是,有一些变通方法,如对该问题的答案所述。由于对Python2的支持已于2020年1月1日结束,因此 答案已修改为与Python3兼容 。 您可以执行以下任一操作(并