указатели — C ++ Vector Trouble. Программа администратора компьютерной лаборатории

Эта программа предназначена для отслеживания использованных и пустых компьютеров в 4 лабораториях. В каждой лаборатории имеется разное количество компьютерных станций, поэтому мне приходилось использовать зубчатые массивы, я не знаю, правильно ли я их реализовал, поскольку впервые работаю с указателями и векторами. Когда я пытаюсь скомпилировать, я получаю следующие ошибки:

labadmin.cpp: In function ‘int main()’:
labadmin.cpp:56:35: error: cannot convert ‘std::vector<int>’ to ‘station2 {aka int*}’ in initialization
station2 store = labs[lab - 1];
^
labadmin.cpp:64:27: error: cannot convert ‘std::vector<int>’ to ‘station2 {aka int*}’ in initialization
station2 store = labs[x];
^
labadmin.cpp:89:30: error: cannot convert ‘std::vector<int>’ to ‘station2 {aka int*}’ in initialization
station2 store = labs[x];

Так чего мне не хватает?

#include <iostream>
#include <vector>
using namespace std;

const int AVAILABLE_LABS = 4;
int *labs[AVAILABLE_LABS];
int capacity[AVAILABLE_LABS];
typedef int *station2;

int main()
{

vector <int> labs[AVAILABLE_LABS];
labs[0].push_back(1); labs[0].push_back(2); labs[0].push_back(3);
labs[0].push_back(4); labs[0].push_back(5);

labs[1].push_back(1); labs[1].push_back(2); labs[1].push_back(3);
labs[1].push_back(4); labs[1].push_back(5); labs[1].push_back(6);

labs[2].push_back(1); labs[2].push_back(2); labs[2].push_back(3);
labs[2].push_back(4);

labs[3].push_back(1); labs[3].push_back(2); labs[3].push_back(3);

int choice;
cout << "Choose a number according to the option you would like to execute.\n";
cout << "0: Exit\n" << endl;
cout << "1: Log in/Log off\n" << endl;
cout << "2: Search\n" << endl;
cin >> choice;

int id, id2, lab, station;

switch(choice){
case 0:
cout << "Goodbye.\n";
break;
case 1:
cout << "LOG IN/LOG OFF\n";
cout << "ID Number (if you wish to log off, enter 0)\n";
cin >> id;
cout << "Enter lab number:\n";
cin >> lab;
cout << "Enter computer station number:\n";
cin >> station;
break;
case 2:
cout << "SEARCH\n";
cout << "User id:\n";
cout << id2;
break;
}

if (choice == 1)
{
station2 store = labs[lab - 1];
store[station - 1] = id;
}
else if (choice == 2)
{

for(int x = 0; x < AVAILABLE_LABS; x++)
{
station2 store = labs[x];
for(int y= 0; y < capacity[x]; y ++)
{
if(store[y] == id)
{
lab = x + 1;
station = y + 1;
}
}
}
if(lab != 0 && station != 0)
{
cout << "ID: " << id
<< "At station: " << station
<< "At lab: " << lab << endl;
}
else
{
cout << "No user logged in.\n";
}
}

for(int x = 0; x < AVAILABLE_LABS; x++)
{
cout << "Lab " << x + 1 << ": ";
station2 store = labs[x];

for(int y = 0; y < capacity[x]; y++)
{
cout << "Station" << y + 1 << ": ";
if(store[y] == 9)
{
cout << "EMPTY ";
}
else {
cout << store[y] << " ";
}
}
cout << endl;
}

return 0;
}

Заранее спасибо.

0

Решение

Чтобы исправить ошибки компиляции, попробуйте следующее:

Закомментируйте вашу декларацию C-массива labs в строке 6, поскольку, в зависимости от используемой вами платформы, это может привести к ошибке переопределения. В Windows это определение labs конфликтует с определением функции labs(long _X) находится в math.h, который является заголовком библиотеки, предоставленным Microsoft.

Затем измените typedef из station2 к следующему:

typedef std::vector<int> station2;

Это должно исправить проблемы компиляции.

Удачи с остальной частью программы.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]