Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.88
Lynx607
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 19
#1

Работа с заголовочным файлом - C++

21.05.2011, 01:13. Просмотров 2133. Ответов 25
Метки нет (Все метки)

Здравствуйте!
В папке лежит несколько файлов: main.cpp, dualsimplex.h, dualsimplex.cpp
Задача: в main.cpp создать объект класса 'DualSimplex' и вызвать функцию 'SetData'

main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
#include "dualsimplex.h"
#include <iostream>
using namespace std;
 
int main ()
{
    DualSimplex problem;
    problem.SetData ();
        
    return 0;
}
dualsimplex.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef DUALSIMPLEX_H
#define DUALSIMPLEX_H
 
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
 
class DualSimplex
{
...
public:
    DualSimplex();
    void SetData();
    void SetData( string in );
}
dualsimplex.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
24
25
26
27
28
29
#include "dualsimplex.h"
#include "tools.h"
#include <iostream> 
#include <fstream>
#include <sstream>
#include <iomanip>
#include <cstring>
#include <cstdlib>
#include <cmath>
using namespace std;
 
DualSimplex::DualSimplex()
{
    for ( int i = 0; i < MAX_NUMBER_OF_VARIABLES; i++ )
    {
        b[i] = 0;
        dual_s[i] = 0;
    }
...
}
 
void DualSimplex::SetData()
{
    char sType[3];
    cout << "Enter the type of problem (\"max\" or \"min\"): ";
    cin >> sType;
    cout << endl;
...
}
компилирую:
Bash
1
2
3
4
5
g++ main.cpp -o test
/tmp/cczMYHXr.o: In function `main':
main.cpp:(.text+0x7a): undefined reference to `DualSimplex::DualSimplex()'
main.cpp:(.text+0x88): undefined reference to `DualSimplex::SetData()'
collect2: ld returned 1 exit status
почитал, что умные люди пишут - заменил в main.cpp 'DualSimplex problem;' на 'DualSimplex problem();':
Bash
1
2
3
g++ main.cpp -o test
main.cpp: In function ‘int main()’:
main.cpp:9: error: request for member ‘SetData’ in ‘problem’, which is of non-class type ‘DualSimplex ()()

Не могу понять - небольшие изменения, а ошибки подключения переходят в ошибки вызова функций класса. Почему?
И как правильно создать объект, а потом вызвать функцию?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2011, 01:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с заголовочным файлом (C++):

Подскажите с заголовочным файлом - C++
есть заголовочный фаил header.h: #include&lt;iostream.h&gt; void fn_void(int m) { m=9; cout&lt;&lt;m; } и есть основная программа: ...

Программа с заголовочным файлом (с++) - C++
Всем Привет! Недавно стал изучать использование заголовочных файлов в с++ и столкнулся с проблеммой. Написал вот такую программу (она...

Компиляция с заголовочным файлом - C++
Стыдно спрашивать но все же. Никак не пойму как компилировать несколько файлов с заголовочным файлом. Вот что мне отвечает Dev-Cpp ...

Cоздание проги с заголовочным файлом - C++
У меня не получается создать простейшую программку с заголовочным файлом. Я создаю заголовочный файл my.h к примеру такой: void...

Невозможно открыть include с заголовочным файлом - C++
Подскажите решение проблемы что только не пробовал не помогает fatal error C1083: Cannot open include file: 'tinystr.h': No such file or...

работа с файлом - C++
объясните, пожалуйста, что тут происходит. особенно строчку, где ofs.write(reinterpret_cast&lt;char const*&gt;(arr), n * sizeof(*arr)); ...

25
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
21.05.2011, 11:44 #16
kravam, В std слишком много всего) Например тот же max или min. Все время выбирать нечто ради того, чтобы не пересечься с пространством имен... Ну это как минимум глупо.
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
21.05.2011, 11:49 #17
Да не, я просто помню служебные слова. Вот Вы помните служебные слова C? А я буду помнить служебные слова STD- раз использовал и запомнил.
А может и не буду. Но до сих пор всегда помнил.
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
21.05.2011, 21:58 #18
kravam, Все?) Ну перечислите с 10-к...

Кстати. th_element - функция STL?
а get_temporary_buffer?
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
22.05.2011, 00:32 #19
Я говорю, стоит один раз использовать имя как имя из пространства std, сразу запомнится; а я эти имена не использовал, поэтому за них ничего не знаю.
0
Lynx607
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 19
22.05.2011, 00:34  [ТС] #20
Господа, у kravam в подписи к нику всё ясно написано. Да и вообще, использовать или нет 'using namespace std;' в h-файлах, каждый решает сам - Вы согласны?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.05.2011, 06:43 #21
Цитата Сообщение от Lynx607 Посмотреть сообщение
Вы согласны?
Нет. Не согласны.
То, что в одной книжке про это не сказано не означает, что в других книгах про это тоже умалчивают.
В любом достаточно крупном проекте, использующем сторонние библиотеки, вопрос пространств имён стоит очень остро. Как же все программисты любят создавать классы string и vector и им подобные...
1
Lynx607
0 / 0 / 0
Регистрация: 18.10.2010
Сообщений: 19
22.05.2011, 13:36  [ТС] #22
Deviaphan, я спросил потому, что каждый волен выбирать тот вариант, который ему больше нравится. Другой вопрос - правильный это выбор или нет.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.05.2011, 13:51 #23
Тогда, давайте все функции и классы помещать в пространство std. Откажемся от разделения на файлы, будем всё в один cpp файл писать (это ведь и скорость компиляции повысит!). Откажемся от закрытых полей и методов - не удобно же! Ну и так далее... А что? Может мне так нравится!
0
kravam
быдлокодер
1703 / 890 / 45
Регистрация: 04.06.2008
Сообщений: 5,489
22.05.2011, 15:37 #24
Я вот это не пойму:
Цитата Сообщение от Deviaphan Посмотреть сообщение
Как же все программисты любят создавать классы string и vector и им подобные...
гадал-гадал чё это значит и не понял. Действовать так плохо или хорошо? По мне так плохо, я делаю vector_
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1306 / 1221 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
22.05.2011, 15:39 #25
Цитата Сообщение от kravam Посмотреть сообщение
По мне так плохо, я делаю vector_
А я во первых не делаю, а во вторых помещаю в пространство имён (не std).
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
22.05.2011, 15:48 #26
kravam, Ну вот смотри... Пишем класс список например. Какое нормальное название? List не так-ли? Так на кой фиг измудряться?
Или класс Stack или Queue...
Гораздо логичнее написать так и поместить в собственное пространство имен, а так же не включать std в этом заголовочном файле...
0
22.05.2011, 15:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2011, 15:48
Привет! Вот еще темы с ответами:

Работа с файлом - C++
Помогите доделать программу. Необходимо создать файл структуры: фамилия абонентов, год установки телефона, номер телефона. Программу...

Работа с файлом - C++
Программа для записи/прочитки текстовых файлов. Почему когда ввожу строку, в файл сохраняется только часть строки(до первого пробела)? ...

Работа с файлом - C++
вот смотрите есть файл chisla.txt В нем содержатся цифры ( Например 101 258 164) Как мне изъять из файла ТОЛЬКО 1 число (например 101)???

c++ работа с файлом - C++
Здраствуйте,в си знания - средненькие,мне предоставилась задача - нужно згенерировать файл для ипфильтра торрента,с сайта провайдера мне...


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

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

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