在没有初始化的情况下使用变量c ++

时间:2015-12-12 17:03:21

标签: c++

我对C ++比较陌生。 我正在使用一个函数给一个对象一些值,但我不断得到该对象正在使用而不被初始化的错误。怎么样?

Worker的定义:

class Worker 
    public:
    int telephone;
    char firstname[20];
    char task[100];
    int salary;
    int id;
};

实际代码:

Worker worker1;
worker1 = getWorker(worker1);

Worker getWorker(Worker worker){
    cout << "First name: ";
    cin >> worker.firstname;
    return worker;

2 个答案:

答案 0 :(得分:1)

getWorker不需要参数。使用本地对象获取输入,并将其返回:

Worker getWorker() {
    Worker worker;
    // whatever
    return worker;
}

此外,使用初始化而不是创建对象然后分配给它们。像这样:

Worker worker1 = getWorker();

答案 1 :(得分:0)

由于您没有明确设置firstname的值,因此可能存在构成firstname的20个字节中存储的任何类型的垃圾。 char缓冲区以0结尾,因此最佳做法是在默认构造函数中为firstname提供初始值:

Worker(){
  //omitting other code
  firstname[0] = '\0';
}

当然,如果您希望变量保存实际值,最好将其传递给构造函数。