Я получаю ошибку при компиляции простой программы с использованием C++ в linux. Есть 3 файла: Employee.h , Employee.cpp, and Salary.cpp (main)
. Я включаю несколько заголовков системы в Salary.cpp <iostream>, <fstream>, <string>, <stdio.h>, <stdlib.h>
Единственная причина, по которой я использую, - это функция itoa()
. Я не мог заставить его компилировать и читать где-нибудь, что «иногда является предварительным условием.
Ошибки я получаю: «Salary.cpp: 195: 47: ошибка: itoa не был объявлен в этой областиКомпиляция простой программы на C++ в linux (первый раз)
Теперь, я я включил заголовки в глобальном масштабе, и itoa() только используется в файле, который я включаю, поэтому я не знаю, почему это произойдет иначе, чем не включать правильные заголовки системы. Нужно ли указывать все системные заголовки в командной строке или что-то еще? Я не совсем уверен, что происходит.
Редактировать: Вот некоторые из исходного кода ... Я только расширил то, что необходимо для его короткого замыкания. Ошибка возникает в функции addEmployee() в нижней части ... Я не уверен, что знаю, как поместить номера строк. Это сразу же после создания нового сотрудника()
#include "Employee.h"
#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
#include <cstdlib>
void findEmployees(Employee*[], const short);
void addEmployee(Employee*[], short&);
unsigned short parseDataFile(Employee* [], short);
bool insertEmployee(Employee*[], short, Employee*);
int main(int argc, char** argv)
{
//100 employees max, too lazy to create dynamic container
Employee* employeeList[100];
//Parse data file, return the length of the list made
short listLen = parseDataFile(employeeList, 100);
//Employee database is built, run query engine
std::cout << "*************************************************\n";
std::cout << "This program lets you search for salaries of employees or input new employee information.\n";
std::cout << "*************************************************\n\n\n";
char choice = { 0 };
while (true)
{
std::cout << "Please choose an option: \n";
std::cout << "(1) Search for employee salaries.\n";
std::cout << "(2) Input new employee data\n";
std::cout << "(3) Exit\n\n";
std::cin >> choice;
switch (choice)
{
case '1':
findEmployees(employeeList, listLen - 1);
break;
case '2':
addEmployee(employeeList, listLen);
break;
case '3':
exit(0);
break;
}
}
return 0;
}
unsigned short parseDataFile(Employee* empList[], short len)
{
//Do stuff
}
void findEmployees(Employee* empList[], const short len)
{
//Do stuff
}
void addEmployee(Employee* empList[], short& len)
{
char first[32] = "";
char last[32] = "";
char salary[32] = "";
char id[32] = "";
bool loop = true;
while (loop)
{
std::cout << "Input Last Name: ";
std::cin.clear();
std::cin.sync();
std::cin.getline(last, 31);
std::cout << std::endl << std::endl;
std::cout << "Input First Name: ";
//Get user name
std::cin.clear();
std::cin.sync();
std::cin.getline(first, 31);
std::cout << std::endl << std::endl;
std::cout << "Input Salary: $";
//Get user name
std::cin.clear();
std::cin.sync();
std::cin.getline(salary, 31);
std::cout << std::endl << std::endl;
Employee* employee = new Employee();
employee->setID(itoa((int)len, id, 10)); //Set id
employee->setFirstName(first); //Set first name
employee->setLastName(last); //Set last name
employee->setSalary(salary); //Set salary
//Inserts new employee at the end of the list, no real reason to sort the list for this assignment
//I guess I could have used std::vector to make it easy
empList[len] = employee;
++len; //Increment length of the list
char yesNo = { 0 };
std::cout << "Would you like to enter another employee? (Y, N): ";
std::cin >> yesNo;
std::cout << std::endl << std::endl;
switch (yesNo)
{
case 'Y':
case 'y':
//do nothing
break;
case 'N':
case 'n':
loop = false;
break;
}
}
}
Я думаю (но я не уверен, у меня очень мало опыта C++ ce), что вам нужно включить '' и' ', чтобы эти функции находились в пространстве имен' std'. –
Kninnug
Не могли бы вы показать нам некоторые из ваших исходников? Я думаю, он должен работать с заголовками, которые вы используете. – jens108
itoa не является членом std. При включении этих файлов я все равно получаю ту же ошибку. Обновление с источником, 1-2 мин. – user2079828