Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 16
1

Ошибка заполнения вектора строк в классе

12.02.2014, 21:31. Показов 2494. Ответов 38
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Никак не могу разобраться. Пробовал по-разному и всегда выскакивали ошибки
Вот есть класс resourse
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
class resourse
{
private:
    int definitions; // = 5;
    int unions;// = 21;
    int prepositions;// = 28;
    int closures;// = 18;
    int particles;// = 32;
    int prefix;// = 21;
    int suffix;// = 55;
 
    bool initDefinitions(int n = 5);
    bool initUnions(int n = 21);
    bool initPrepostitions(int n = 28);
    bool initClosures(int n = 18);
    bool initParticles(int n = 32);
    bool initPrefix(int n = 21);
    bool initSuffix(int n = 55);
public:
    resourse(void);
    ~resourse(void);
    int getDefinitions();
    int getUnions();
    int getPrepositions;
    int getClosures();
    int getParticles();
    int getPrefix();
    int getSuffix();
};
Потом я описываю функции класса
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
resourse::resourse(void)
{
}
 
resourse::~resourse(void)
{
}
 
bool resourse::initDefinitions(int n)
{
       
        definitions.push_back(".");
        definitions.push_back("!");
        definitions.push_back("?");
        definitions.push_back("!?");
        definitions.push_back("?!");  
               
}
// и другие функции
При попытке компиляции куча ошибок связанных с push_back.
Объясните, пожалуйста, что я не так делаю...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.02.2014, 21:31
Ответы с готовыми решениями:

Функция заполнения вектора
Доброго времени суток всем, кто на форуме. Где-то мне попадалась функция, которая может заполнить...

Организация заполнения вектора с консоли
есть код для заполнения массива #define ESC 27 vector <int> Heights; int h; while (...

While(cin >> x) или подскажите другие способы заполнения вектора
Читаю Страуструпа. Ну и естественно делаю упражнения. И вот дошел до 5 главы, где понадобилась его...

Объявление вектора в классе
Здравствуйте! объявляю структуру в h файле: struct Admin { char login_admin; char...

38
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 21:35 2
Цитата Сообщение от eter4eter Посмотреть сообщение
Ошибка заполнения вектора строк в классе
Где здесь вектор строк?
0
224 / 224 / 38
Регистрация: 17.12.2010
Сообщений: 713
12.02.2014, 21:36 3
alsav22, я бы спросил где здесь вектор...

C++
1
 int definitions; // = 5;
C++
1
  definitions.push_back(".");
0
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.02.2014, 21:36 4
Цитата Сообщение от eter4eter Посмотреть сообщение
definitions
Это целочисленный тип int. Это не контейнер.

Контейнеры - это std::vector, std::list, std::string и др.
0
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 16
12.02.2014, 21:41  [ТС] 5
Ой, извиняюсь.
Не этот файл скопировал Вот этот файл
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
class resourse2
{
private:
    vector<string> definitions; // = 5;
    vector<string> unions;// = 21;
    vector<string> prepositions;// = 28;
    vector<string> closures;// = 18;
    vector<string> particles;// = 32;
    vector<string> prefix;// = 21;
    vector<string> suffix;// = 55;
 
    bool initDefinitions(int n = 5);
    bool initUnions(int n = 21);
    bool initPrepostitions(int n = 28);
    bool initClosures(int n = 18);
    bool initParticles(int n = 32);
    bool initPrefix(int n = 21);
    bool initSuffix(int n = 55);
public:
        resourse2(void);
        ~resourse2(void);
        int getDefinitions();
    int getUnions();
    int getPrepositions;
    int getClosures();
    int getParticles();
    int getPrefix();
    int getSuffix();
};
resourse2::resourse2(void)
{
}
 
resourse2::~resourse2(void)
{
}
Добавлено через 51 секунду
А ошибки были вот такие
error C2228: выражение слева от ".push_back" должно представлять класс, структуру или объединение
0
224 / 224 / 38
Регистрация: 17.12.2010
Сообщений: 713
12.02.2014, 21:43 6
C++
1
2
3
4
5
#include<vector>
#include<string>
 
using std::string;
using std::vector;
подключили?
0
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 16
12.02.2014, 21:46  [ТС] 7
Да, подключены
C++
1
2
3
4
#include "resourse.h"
#include <vector>
#include <string>
using namespace std;
0
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.02.2014, 21:46 8
C++
#include <stdio.h>
#include <locale.h>
#include <vector>
#include <string>
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    std::string str("Строка С++"); // строковая переменная str
 
    std::vector<std::string>vs; // контейнер типа vector под хранение строк типа string
    vs.push_back(str); // добавление в контейнер строки str
    vs.push_back("Еще одна строка"); // добавление в контейнер строки "Еще одна строка"
 
    printf("%s\n", vs[0].c_str()); // Строка в первом элементе контейнера
    printf("%s\n", vs[1].c_str()); // Строка во втором элементе контейнера
}
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 21:47 9
Цитата Сообщение от eter4eter Посмотреть сообщение
Да, подключены
Показывайте код, где и вектор строк есть и push_back(). Откуда файл взялся, с тем же именем поля, но не вектора строк? Путаница у вас там какая-то с файлами. От этого, наверное, и ошибки.
0
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 16
12.02.2014, 21:51  [ТС] 10
resourse.h
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
#pragma once
 
#include <vector>
#include <string>
 
using namespace std;
class resourse2
{
private:
    vector<string> definitions; // = 5;
    vector<string> unions;// = 21;
    vector<string> prepositions;// = 28;
    vector<string> closures;// = 18;
    vector<string> particles;// = 32;
    vector<string> prefix;// = 21;
    vector<string> suffix;// = 55;
 
    bool initDefinitions(int n = 5);
    bool initUnions(int n = 21);
    bool initPrepostitions(int n = 28);
    bool initClosures(int n = 18);
    bool initParticles(int n = 32);
    bool initPrefix(int n = 21);
    bool initSuffix(int n = 55);
public:
    resourse2(void);
    ~resourse2(void);
    int getDefinitions();
    int getUnions();
    int getPrepositions;
    int getClosures();
    int getParticles();
    int getPrefix();
    int getSuffix();
};
resource.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "resourse.h"
#include <vector>
#include <string>
using namespace std;
 
resourse2::resourse2(void)
{
}
 
resourse2::~resourse2(void)
{
}
 
bool resourse2::initDefinitions(int n)
{
       
        definitions.push_back(".");
        definitions.push_back("!");
        definitions.push_back("?");
        definitions.push_back("!?");
        definitions.push_back("?!");  
               
}
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 21:55 11
Тут нет ошибок.
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Откуда файл взялся, с тем же именем поля, но не вектора строк?
0
224 / 224 / 38
Регистрация: 17.12.2010
Сообщений: 713
12.02.2014, 21:57 12
C++
1
2
3
4
5
6
7
8
9
10
bool resourse2::initDefinitions(int n)
{
       
        definitions.push_back(".");
        definitions.push_back("!");
        definitions.push_back("?");
        definitions.push_back("!?");
        definitions.push_back("?!");  
               
}
return забыли

ps: А так компилируется..
0
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.02.2014, 21:57 13
eter4eter, попробуйте переместить initDefinitions в отсек public
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 22:01 14
Цитата Сообщение от programina Посмотреть сообщение
eter4eter, попробуйте переместить initDefinitions в отсек public
И как это повлияет на push_back()?
0
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.02.2014, 22:02 15
Цитата Сообщение от alsav22 Посмотреть сообщение
И как это повлияет на push_back()?
повлияет.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 22:03 16
Цитата Сообщение от programina Посмотреть сообщение
повлияет.
А если объяснить: почему повлияет?
0
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.02.2014, 22:05 17
alsav22, так. Если она приватная, то к ней нельзя доступиться.
0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 22:07 18
Цитата Сообщение от programina Посмотреть сообщение
Если она приватная, то к ней нельзя доступиться.
При чём здесь тогда это?
Цитата Сообщение от eter4eter Посмотреть сообщение
При попытке компиляции куча ошибок связанных с push_back.
Если нет доступа, то ошибки были бы связаны с initDefinitions() (писалось бы, что недоступно), а не с push_back().
0
programina
12.02.2014, 22:08
  #19

Не по теме:

Цитата Сообщение от alsav22 Посмотреть сообщение
При чём здесь тогда это?
Добро пожаловать в удивительный мир Visual Studio

0
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 22:10 20
Цитата Сообщение от programina Посмотреть сообщение
Добро пожаловать в удивительный мир Visual Studio
При чём здесь "мир Visual Studio"? Пишут же (и не только я):
Цитата Сообщение от Aloir Посмотреть сообщение
А так компилируется..
В выложенном коде нет ошибок.
0
12.02.2014, 22:10
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.02.2014, 22:10
Помогаю со студенческими работами здесь

Добавление элементов вектора в классе
Скажем так код отсебятина, сейчас изучаю по немногу программирование, в уроках была задачка более...

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

Реализовать функцию перемещения строк, принимающую в качестве параметров два вектора строк
Подскажите насколько правильно решена задача. условие: Напишите функцию MoveStrings, которая...

Оператор >> в классе вектора
Доброго дня, уважаемые форумчане. Описываю класс - вектор. Подскажите пожалуйста, как добиться...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru