2015-12-12 2 views
-4

Я относительно не знаком с 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; 
+5

«Я сделал в основном то же самое на Java». Да, и, как вы могли заметить, это не те же языки. – Downvoter

+1

Какое точное диагностическое сообщение? Как определяется «Рабочий»? – Downvoter

+0

Возможный дубликат [инициализация статической переменной с вызовом функции дает ошибку компиляции?] (Http://stackoverflow.com/questions/12720400/initializing-static-variable-with-a-function-call-gives-compilation-error) – Superlokkus

ответ

1

getWorker не требуется аргумент. Используйте локальный объект, чтобы получить ввод, и вернуть его:

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

Кроме того, использование инициализации вместо того, чтобы создавать объекты, то назначая им. Примерно так:

Worker worker1 = getWorker(); 
0

Как вы явно не установлено значение FirstName там может быть любой вид мусора хранится в 20 байт которые составляют первое имя. символьные буфера 0 прекращаются, поэтому лучше практика была бы дать начальное значение ПгвЬЫата в конструкторе по умолчанию:

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

Конечно, если вы хотите, чтобы переменное держать фактическое значение было бы лучше, чтобы передать его в конструктор.

Смежные вопросы