Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
112 / 112 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
1

Как определять какой метод должен быть статическим, а какой нет?

01.08.2012, 16:55. Просмотров 1379. Ответов 8
Метки нет (Все метки)

Quer::add_line_to_vec: недопустимый вызов нестатической функции-члена
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.08.2012, 16:55
Ответы с готовыми решениями:

В классе Student определите метод InitAr (Метод должен быть статическим)
Здравствуйте. Помогите пожалуйста разобраться в задании: a. В классе Student определите метод...

Как думаете в этой схеме - диод какой должен быть ?
С наступающими праздниками всех ! Посмотрите пожалуйста эту схемку и скажите как вы думаете какие...

Какой должен быть ТИЦ, чтобы быть на 1-2 странице поиска по распространенным ключевым словам
Google приводит на мой сайт примерно в 10 раз больше посетителей, чем Яндекс. Нарушаются все...

Как в поле таблицы сохранить файл документ какой тип данных должен быть и как преобразовать на C#
Необходимо сохранить файл в базу данных на C# ПОдскажите как это сделать)) Заранее спасибо!!!

8
Эксперт по пяченькам
67 / 67 / 12
Регистрация: 16.08.2011
Сообщений: 249
01.08.2012, 17:03 2
Ну если он использует переменные конкретного объекта и ассоциируется именно с этим объектом, то нестатический, в противном случае статический (т.е. не относиться к конкретному объекту класса, но относится к классу)
1
112 / 112 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
01.08.2012, 17:06  [ТС] 3
можно на коротеньком примере ?

вот мой класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
class Quer {
public:
    typedef std::vector<std::string>::size_type siz_vec;     // тип хранящий размер вектора
 
    // МЕТОДЫ
    void add_line_to_vec(std::ifstream&);
    
 
private:
    std::map<std::string, std::set<int> > word_map;     // карта хранящая слово(ключ) и номера строк в которых оно встречается(набор)
    std::vector<std::string> line_text;                 // вектор хранящий каждую строку текста
};

вот программа
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main() 
{
    std::string file_name_str;
    std::ifstream file_f;
    std::cout << "Enter file name and its type(name.type)" << std::endl
            << " -> ";
    std::cin >> file_name_str;
    open_file(file_f, file_name_str);
    Quer::add_line_to_vec(file_f);
 
    return 0;
}

определение функций
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
void open_file(std::ifstream& f, std::string ss)
{ 
    if (std::ifstream(ss.c_str()) == NULL) {
        system("cls");
        std::cout << "Error file not found!" << std::endl
            << "Enter file name and its type(name.type)" << std::endl
            << " -> ";
        std::string if_error;
        std::cin >> if_error;
        open_file(f, if_error);
    } else {
        f.open(ss.c_str());
        std::cout << "Excellent! The file is opened" << std::endl;
    }
}
 
//Заполняем вектор строками из открытого файла
void Quer::add_line_to_vec (std::ifstream& f) 
{
    std::string line;
    while (std::getline(f, line)) {
        line_text.push_back(line);
    }       
}
0
Эксперт по пяченькам
67 / 67 / 12
Регистрация: 16.08.2011
Сообщений: 249
01.08.2012, 17:22 4
Насчет примера пока что ничего придумать путного не могу.
Но по коду можно сказать следующее:
C++
1
Quer::add_line_to_vec(file_f);
Нестатическая функция относиться к конкретному объекту, поэтому вызывается у этого объекта
т.е.
C++
1
2
Quer a;
a.add_line_to_vec(file_f);
или
C++
1
2
Quer a;
a->add_line_to_vec(file_f);
А в данном случае функция у тебя к объекту не привязана.
В данном случае функция у тебя должна быть нестатическая, т.к. добавляет строку текста в конкретный объект класса.
1
112 / 112 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
01.08.2012, 17:25  [ТС] 5
все понял, спасибо
0
ниначмуроФ
844 / 528 / 110
Регистрация: 12.10.2009
Сообщений: 1,915
01.08.2012, 17:45 6
Цитата Сообщение от DaskOFF Посмотреть сообщение
можно на коротеньком примере ?
как пример посмотри паттерн Singleton
0
Эксперт С++
8303 / 6057 / 602
Регистрация: 10.12.2010
Сообщений: 28,148
Записей в блоге: 26
01.08.2012, 18:11 7
C++
1
2
3
4
5
6
7
8
9
10
class Quer {
public:
    typedef std::vector<std::string>::size_type siz_vec;  
 
    static void add_line_to_vec(std::ifstream&);
    
private:
    static std::map<std::string, std::set<int> > word_map;   
    static std::vector<std::string> line_text;              
};
Статические ф-ции работаю со статическими членами класса.

Как вариант передавать статической ф-ции конкретный объект:
C++
1
2
Quer Obj;
Quer::add_line_to_vec(file_f,Obj);
0
554 / 508 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
01.08.2012, 18:14 8
Цитата Сообщение от Avazart Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
class Quer {
public:
    typedef std::vector<std::string>::size_type siz_vec;  
 
    static void add_line_to_vec(std::ifstream&);
    
private:
    static std::map<std::string, std::set<int> > word_map;   
    static std::vector<std::string> line_text;              
};
Статические ф-ции работаю со статическими членами класса.
Как вариант передавать статической ф-ции конкретный объект.
не забыть бы еще где-нибудь создать эти статические члены класса, а то линкер заругается
0
Эксперт С++
8303 / 6057 / 602
Регистрация: 10.12.2010
Сообщений: 28,148
Записей в блоге: 26
01.08.2012, 18:15 9
не забыть бы еще где-нибудь создать эти статические члены класса, а то линкер заругается
Само собой...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.08.2012, 18:15

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Какой тип должен быть у функции?
Сделал ф-цию, которая считывает файла и записывает результат работы с данными в vector. решил...

Какой формат должен быть у .htaccess?
Здравствуйте. С .htaccess я плотно ещё не соприкасался, поэтому возникли некоторые проблемы. Их я...

Какой алгоритм должен быть у формулы?
Здравствуйте! Пробую решать задачи по основам программирования и алгоритмизации по учебнику. На...

Какой должен быть игровой системник?
Здравствуйте подскажите !!! Хочу взять Хороший игровой Системник что должно быть внутри?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.