gpt4 book ai didi

c++ - 指向结构数组中结构的指针

转载 作者:行者123 更新时间:2023-11-28 05:17:39 25 4
gpt4 key购买 nike

所以我需要获取结构#1 (e[0]) 的代码,但出现以下错误;“错误:请求‘emp1’中的成员‘get_code’,其指针类型为‘Employee*’(也许您打算使用‘->’?)”我真的不明白如何解决这个问题。另外,这是一个分配,所以我必须使用结构,而且,我不知道“->”是什么,但如果它是任何运算符或其他东西,我不允许使用它,因为我们没有被教导那还。(similar 问题的答案建议使用 -> 所以这对我不起作用。)我也试过使用 *(emp1).get_code()

#include <iostream>

#include <string.h>

using namespace std;
struct Employee{

private:
string code;
string name;
float salary;

public:
void set_code(string c){
code=c;
}
void set_name(string n){
name=n;
}
void set_sal(float s){
salary=s;
}
string get_code(){
return code;
}
string get_name(){
return name;
}
float get_sal(){
return salary;
}
};

int main(void) {
Employee e[2],*emp1,*emp2;
string c,n;
float s;
for (int i=0;i<2;i++){
cout<<"Enter code for employee "<<i+1;
cin>>c;
e[i].set_code(c);
cout<<"Enter name for employee "<<i+1;

cin>>n;
e[i].set_name(n);
cout<<"Enter salary for employee "<<i+1;
cin>>s;
e[i].set_sal(s);
}
*emp1=e[0];
cout<<emp1.get_code();

}

最佳答案

首先,这一行是不正确的:

*emp1=e[0];

您的行所做的是将结构值“e[0]”分配给指针“emp1”处的结构。然而,指针“emp1”从未被初始化,所以你最终会写入一个无效的位置。你需要写的是:

emp1=&e[0];

这实际上会将 emp1 设置为“e[0]”的位置。

其次,符号“->”是您想要访问指针成员时使用的符号。在这种情况下你不应该写:

cout<<emp1.get_code();

而是:

cout<<emp1->get_code();

您需要这样写的原因是“emp1”是一个指针。因此,要访问其成员“get_code”,您需要使用符号“->”。

关于c++ - 指向结构数组中结构的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42279297/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com