class Dog {
public:
string name;
};
class Person {
public:
void play(Dog f) {//L1行
cout << f.name << endl;//L2行
};
};
int main() {
Person *per = new Person();
Dog *dog = new Dog();
dog->name = "小黑";//L3行
per->play(dog);//L4行
return 0;
}
主函数里,dog 是Dog类的指针类型, 后面你要这样调用:
per->play(*dog);
是的,因为在L4行中调用的是play()函数,并使用了dog作为参数传递给它。而在定义的类中,play()函数需要接收一个Dog类型的参数,因此应该将L3行修改为dog->name = "小黑"。最后的代码应该如下所示:
class Dog {
public:
string name;
};
class Person {
public:
void play(Dog f) { //L1行
cout << f.name << endl; //L2行
};
};
int main() {
Person *per = new Person();
Dog *dog = new Dog();
dog->name = "小黑"; //L3行 (修改为dog->name = "小黑")
per->play(*dog); //L4行 (修改为per->play(*dog))
return 0;
}
这里需要注意的是,在L4行中,需要将dog作为指针传递给类函数play(),因此需要解引用dog指针,即使用 *dog 来获取dog对象本身。
不知道你这个问题是否已经解决, 如果还没有解决的话:抱歉,您没有提出明确的问题。请提供更具体的信息。