Написал код, но в строке
driver *a=new driver[nr]
выдает ошибку:
undefined reference to driver::driver();
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
class driver
{
private:
string name;
string surname;
string categories;
int salary, hours;
public:
driver();
~driver()
{
std::cout<<"\nDestructor executed";
}
driver(driver const &cop)
{
name=cop.name;
prename=cop.surname;
categorii=cop.categories;
salary=cop.salary;
hours=cop.hours;
}
driver(string n, string p, string c, int s, int h)
{
name.clear();
surname.clear();
categories.clear();
salary=0;
hours=0;
init(n,p,c,s,h);
}
void init(string n, string p, string c, int s, int h)
{
name=n;
surname=p;
categories=c;
salary=s;
hours=h;
}
void reads()
{
std::cout<<"\t\t Give information about driver:"<<std::endl;
std::cout<<"\t\t---------------------------------------\n";
std::cout<<"\tGive name: "; std::cin>>name;
std::cout<<"\tGive surname: "; std::cin>>surname;
std::cout<<"\tGive categories of driver license: "; std::cin>>categories;
std::cout<<"\tHow much he is payd for hour: "; std::cin>>salary;
std::cout<<"\tHow many hours did "<<n<<" "<<p<<" works? "; std::cin>>hours;
}
void print()
{
std::cout<<name<<" "<<surname<<" ";
std::cout<<"has categories "<<categories<<endl;
std::cout<<"Salary per hour is "<<salary<<endl;
std::cout<<"Driver had worked "<<hours<<" hours"<<endl;
std::cout<<"Full payment is "<<salary*hours<<" $"<<endl;
}
};
int main()
{
int nr,i;
cout<<"Vvedite cislo voditeley:"; cin>>nr;
driver a=new driver[nr];
for(i=0;i<nr;i++)
{
a[i].reads();
cout<<endl;
}
for(i=0;i<nr;i++)
{
a[i].print();
cout<<endl;
}
delete[] a;
return 0;
}
Что не так в данном случае?
А также, как сделать чтобы а
был динамическим массивом? Пробовал как в Си:
a=(driver*) malloc (nr*sizeof(driver))
, но не получается.
Совершенно ясно ведь написано - нет driver::driver();
. Вы объявили конструктор по умолчанию driver();
, но тела-то не написали...
Еще у вас какие-то левые имена в
prename=cop.surname;
categorii=cop.categories;
В классе таких членов нет.
В reads()
не объявлены n
и p
.
Ну, и в
driver a=new driver[nr];
у вас не хватает звездочки. Это - что касается синтаксиса.
Что вы понимаете под "динамическим массивом"? Если массив, выделенный в куче - то вы его уже получили (как только допишете конструктор по умолчанию). Через malloc
категорически не советую - это просто выделение памяти, конструкторы/деструкторы не будут вызываться, и вообще, это не наш (C++) метод :)
Если массив, динамически меняющий свой размер во время выполнения - то руками это - судя по вашему коду - вам еще рановато, имеет смысл использовать vector
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Мне нужно построить график функции распределенияДля этого я решил использовать GnuPlot
Этот вопрос уже наверняка поднимался не раз, но что-то я не могу найти конкретного ответа да или нетУчу C++, возник вопрос: существуют ли стандартные...
Присутствует сруктура из си заголовка, такого вида:
Вопрос в заголовкеКак можно скомпилировать бинарник для использования на Linux/Android/etc, используя Windows? Для сборки использую make, но, вроде, gcc не умеет...