0 / 0 / 0
Регистрация: 22.05.2022
Сообщений: 3
1

Выдаёт ошибку, что вектор не является шаблоном

22.05.2022, 15:41. Показов 815. Ответов 4

Добрый день. Столкнулся со следующей проблемой: в файле .cpp VS2019 вектор определяется и код работает отлично, но если вынести класс в заголовочный файл - выдаёт ошибку, что вектор не является шаблоном:

Заголовочный файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#pragma once
 
class User
{
private:
    vector <string> name; // строковый вектор имён
    vector <string> IDE;  // строковый вектор IDE
    vector <int> licens;  // числовой вектор номера лицензии
public:
    static int count;
    User(); // конструктор
    void output();
 
};
-------------------------------------------------------------------------
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Исполнительный файл:
#include <iostream>
#include <locale>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
 
User::User(){
        ifstream ifst("test.txt"); // подключение файла
 
        while (!ifst.eof())
        {
            string tempn;
            string tempi;
            int templ;
 
            ifst >> tempn >> tempi >> templ;
 
            name.push_back(tempn);// вставляем в вектор имя из файла
            IDE.push_back(tempi);// вставляем в вектор айди из файла
            licens.push_back(templ);// вставляем в вектор лицензию из файла
 
            count++;
        }
}
 
void User::output()
{
    string n;
    int x = 0;
    cout << "name: " << endl;
    cin >> n;
    for (int i = 0; i < count; i++)
    {
        if (name[i] == n && licens[i] != x) {
            cout << "name: " << name[i] << "   IDE: "<< IDE[i] << "   licens: " << licens[i] << endl;
        }
    }
}
 
int User::count = 0;
 
int main(void)
{
    setlocale(0, "");
    User list;
    cout << list.count << " ";
    cout << "User in list:\n";
    list.output();
    cin.get();
}
Кто-нибудь знает где ошибка?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.05.2022, 15:41
Ответы с готовыми решениями:

Выдает ошибку, что метод getPreventDefault является устаревшим
Доброго времени суток ругается Метод getPreventDefault() является устаревшим. Для его замены...

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

При решении программа выдаёт значение функции, равное 0 или выдаёт ошибку. Что не так?
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cmath&gt; using namespace std; long Fact(short...

Что не так с шаблоном функции. Выдает: "для индекса требуется массив или тип указателя"
#include &lt;iostream&gt; using namespace std; template &lt;typename T&gt; void zapolnenie(T i, T a, T...

Что не так с кодом. Постоянно выдаёт ошибку что бы я ни делал
Вычислить значение циклической функции Функция: z=a cos(bt sin t)+c Изменение аргумента:...

4
602 / 382 / 183
Регистрация: 18.10.2020
Сообщений: 1,424
22.05.2022, 16:02 2
Лучший ответ Сообщение было отмечено DaniilGalizkiy как решение

Решение

перенесите

C++
1
2
3
#include <string>
#include <vector>
using namespace std;
в заголовочный файл.
и вставьте
C++
1
#include "funcs.h"
в исполнительный файл
1
0 / 0 / 0
Регистрация: 22.05.2022
Сообщений: 3
22.05.2022, 16:24  [ТС] 3
Большое спасибо. Действительно, надо было перенести из исполнительного в заголовочный указанные вами три строки и код заработал)
0
1158 / 821 / 357
Регистрация: 26.02.2015
Сообщений: 3,700
22.05.2022, 16:36 4
Цитата Сообщение от programmer_08 Посмотреть сообщение
перенесите
Плохой совет. Не используй using namespace в глобальной области видимости. Подключи нужные заголовки и пиши std::vector.

Цитата Сообщение от DaniilGalizkiy Посмотреть сообщение
static int count;
Зачем она в секции public? Пользователь класса сможет менять его состояние ведь напрямую.

Добавлено через 6 минут
У тебя класс User, что подразумевает пользователя (одного), а по факту он содержит в себе МНОГО пользователей. Было бы логично завести тип User с двумя полями string и одним - int, а потом уже в векторе держать User.

C++
1
std::vector<User> users;
1
0 / 0 / 0
Регистрация: 22.05.2022
Сообщений: 3
23.05.2022, 16:22  [ТС] 5
Проще заполнять информацией из файла, когда класс с векторными свойствами. Понятия не имею как сделать вектор классов, и чтобы каждый класс отдельно заполнялся одним файлом)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.05.2022, 16:22
Помогаю со студенческими работами здесь

Выдаёт ошибку, пишет что слишком мало аргументов в функции Per, что не так, подскажите
#include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int St (int x) { if (x==0) ...

Доказать, что вектор не является собственным
Пусть x, y – собственные векторы линейного преобразования, отвечающие различным собственным...

Когда подхожу к нпс который является триггером выдаёт ошибку по типу Parameter ... does not exist
Написал код для диалоговых окон, чтобы можно было подойти к нпс и появлялась кнопка нажимая на...

СМА Hansa PG5510A412 s/n 04454930213108 после нескольких минут выдает ошибку, выдает ошибку
Hansa PG5510A412 s/n 04454930213108 отработала 2 месяца на этом же месте, магазин где брали...

Почему тут выдает такую ошибку? что тут не так? можете подсказать? Ошибку Е0513
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; typedef struct node { int val; struct node * next;...

Что за ошибку выдает
pt = '/var/www/'+str(parent) #Удаляем каталоги на удаленном сервере cnopts = SFTP.CnOpts()...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru