为什么这个问候函数不返回可接受的值?

时间:2016-07-29 05:14:07

标签: c++ function struct variable-assignment

#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的值,以便我可以正确返回?

感谢你在正确的方向上轻推!

3 个答案:

答案 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;
};