#include <string>
struct Person
{
Person(std::string name) {
}
std::string greet(std::string other_name)
{
name="Joe";
return "Hi " + other_name + ", my name is " + name;
}
std::string name;
};
使用greet函数,我希望返回一个名称(例如John),但是,函数在写入时不返回任何内容。在“我的名字是”字符串之后它是空白的。
如何在结构中正确分配name的值,以便我可以正确返回?
感谢你在正确的方向上轻推!
答案 0 :(得分:0)
它没有从构造函数中的参数初始化name字段。即将构造函数更改为:
#include <string>
struct Person
{
Person(std::string name) : name(name) {} {
}
std::string greet(std::string other_name)
{
return "Hi " + other_name + ", my name is " + name;
}
std::string name;
};
这可以解决您的问题并返回所需的解决方案。
答案 1 :(得分:-1)
尝试使用断点?
我使用g ++与minGW运行代码并获得相同的结果,然后将其更改为此
#include <iostream>
#include <string>
using std::string;
struct Person
{
string name;
Person(string _name) {
name = _name;
}
string greet(string other_name)
{
return "Hi " + other_name + ", my name is " + name;
}
};
int main()
{
Person person("foo");
std::cout << person.greet("bar");
return 0;
}
问题是name为null,但编译器没有给出任何警告 这输出&#34;你好吧,我的名字是foo&#34; ,我自己编译并得到了正确的结果
答案 2 :(得分:-1)
#include <string>
struct Person
{
Person(std::string _name) {
name = _name;}
std::string greet(std::string other_name)
{
return "Hi " + other_name + ", my name is " + name;
}
std::string name;
};