-8

我编写了一个代码来打印 2 个工人的姓名,但它打印的是垃圾。

cout << "highest salary: " << highestSalary.getID() << " " << highestSalary.getName() << endl;

cout << "hardest worker: " << mostHours.getID() << " " << mostHours.getName();

函数 getName() 在工作类中定义为:

char* Worker::getName()
{
    char temp[20];

    int i;
    strcpy(temp, name);

    return temp;
}

在调试器上通过这个我尝试将highestSalary.getName()的值放在ver char * temp中,该值是我预期的,比如说“bob”,但在cout之后,值是“”和cout印刷垃圾。

4

2 回答 2

8

NO NO NO,您正在返回一个指向局部函数变量的指针。这就是它崩溃的原因。

改为这样做:

std::string Worker::getName()
{
   std::string temp(name); // not sure what type of name is...
   return temp;
}

别忘了#include<string>

现在你有了真正的 C++,而不是 C 和指针。

于 2013-03-10T13:11:19.527 回答
1

您正在传递一个指向局部变量的指针。一旦你的函数结束,这个变量就消失了。

如果这是 C++,你应该使用 string 类。如果出于某种原因你不这样做,至少是const 正确的

const char* Worker::getName() const 
{
    return name;
}
于 2013-03-10T13:14:38.250 回答