Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
eter4eter
0 / 0 / 0
Регистрация: 12.02.2014
Сообщений: 16
12.02.2014, 21:31     Ошибка заполнения вектора строк в классе #1
Никак не могу разобраться. Пробовал по-разному и всегда выскакивали ошибки
Вот есть класс 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.
Объясните, пожалуйста, что я не так делаю...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 21:35     Ошибка заполнения вектора строк в классе #2
Цитата Сообщение от eter4eter Посмотреть сообщение
Ошибка заполнения вектора строк в классе
Где здесь вектор строк?
Aloir
 Аватар для Aloir
216 / 216 / 13
Регистрация: 17.12.2010
Сообщений: 688
12.02.2014, 21:36     Ошибка заполнения вектора строк в классе #3
alsav22, я бы спросил где здесь вектор...

C++
1
 int definitions; // = 5;
C++
1
  definitions.push_back(".");
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.02.2014, 21:36     Ошибка заполнения вектора строк в классе #4
Цитата Сообщение от eter4eter Посмотреть сообщение
definitions
Это целочисленный тип int. Это не контейнер.

Контейнеры - это std::vector, std::list, std::string и др.
eter4eter
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" должно представлять класс, структуру или объединение
Aloir
 Аватар для Aloir
216 / 216 / 13
Регистрация: 17.12.2010
Сообщений: 688
12.02.2014, 21:43     Ошибка заполнения вектора строк в классе #6
C++
1
2
3
4
5
#include<vector>
#include<string>
 
using std::string;
using std::vector;
подключили?
eter4eter
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;
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 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()); // Строка во втором элементе контейнера
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 21:47     Ошибка заполнения вектора строк в классе #9
Цитата Сообщение от eter4eter Посмотреть сообщение
Да, подключены
Показывайте код, где и вектор строк есть и push_back(). Откуда файл взялся, с тем же именем поля, но не вектора строк? Путаница у вас там какая-то с файлами. От этого, наверное, и ошибки.
eter4eter
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("?!");  
               
}
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 21:55     Ошибка заполнения вектора строк в классе #11
Тут нет ошибок.
???
Цитата Сообщение от alsav22 Посмотреть сообщение
Откуда файл взялся, с тем же именем поля, но не вектора строк?
Aloir
 Аватар для Aloir
216 / 216 / 13
Регистрация: 17.12.2010
Сообщений: 688
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: А так компилируется..
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.02.2014, 21:57     Ошибка заполнения вектора строк в классе #13
eter4eter, попробуйте переместить initDefinitions в отсек public
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 22:01     Ошибка заполнения вектора строк в классе #14
Цитата Сообщение от programina Посмотреть сообщение
eter4eter, попробуйте переместить initDefinitions в отсек public
И как это повлияет на push_back()?
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.02.2014, 22:02     Ошибка заполнения вектора строк в классе #15
Цитата Сообщение от alsav22 Посмотреть сообщение
И как это повлияет на push_back()?
повлияет.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 22:03     Ошибка заполнения вектора строк в классе #16
Цитата Сообщение от programina Посмотреть сообщение
повлияет.
А если объяснить: почему повлияет?
programina
 Аватар для programina
1912 / 597 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
12.02.2014, 22:05     Ошибка заполнения вектора строк в классе #17
alsav22, так. Если она приватная, то к ней нельзя доступиться.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 22:07     Ошибка заполнения вектора строк в классе #18
Цитата Сообщение от programina Посмотреть сообщение
Если она приватная, то к ней нельзя доступиться.
При чём здесь тогда это?
Цитата Сообщение от eter4eter Посмотреть сообщение
При попытке компиляции куча ошибок связанных с push_back.
Если нет доступа, то ошибки были бы связаны с initDefinitions() (писалось бы, что недоступно), а не с push_back().
programina
12.02.2014, 22:08
  #19

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.02.2014, 22:10     Ошибка заполнения вектора строк в классе
Еще ссылки по теме:

Написать программу заполнения двумерного массива A по схеме, результаты заполнения выдать на экран и в файл C++
C++ Объединение строк в строковом классе
C++ Функция заполнения вектора

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
12.02.2014, 22:10     Ошибка заполнения вектора строк в классе #20
Цитата Сообщение от programina Посмотреть сообщение
Добро пожаловать в удивительный мир Visual Studio
При чём здесь "мир Visual Studio"? Пишут же (и не только я):
Цитата Сообщение от Aloir Посмотреть сообщение
А так компилируется..
В выложенном коде нет ошибок.
Yandex
Объявления
12.02.2014, 22:10     Ошибка заполнения вектора строк в классе
Ответ Создать тему
Опции темы

Текущее время: 12:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru