В utils.cpp реализация функции, в utils.h ее прототип. Функция main знает ее прототип(ибо include "utils.h") и этого достаточно чтобы вызвать ее. Многие вопросы по Windows отпадут, если посмотреть тут
Всё, вроде как понял!Когда мы с помощью include "untils.h" "наталкиваемся на прототип(в untils.h), то тем самым мы обращаемся к функции(в untils.cpp)." FinderX - Android Аркада
Сообщение отредактировал goldsphere - Понедельник, 26 Марта 2012, 14:25
Привет всем!Я решил поэкспериментировать с ООП.На простейшем примере - сумме двух чисел, используя функцию.Вообщем вот код, проблему опишу ниже: function.h
Code
#include <iostream> //объекты cout ; endl. #include <conio.h> // _getch(); using namespace std; // std void sum( int a, int b) //объявляем функцию,передаём параметры. { cin >> a; cin >> b; cout<<a+b<<endl; }
main.cpp
Code
#include "function.h" //Подключаем заголовочный файл function.h void sum(int a, int b); //Создаём прототип функции int main() { sum(); //Ошибка!Какие параметры мы должны передать? _getch(); return 0; }
Я не очень разобрался: какие параметры мы должны передавать в вызов функции, если мы объявляем переменные в function.h как параметры функции? FinderX - Android Аркада
#include "function.h" //Подключаем заголовочный файл function.h int sum(int a, int b); //Создаём прототип функции
int main() { int a,b; cout<<sum(a,b); //Тут функции посылается эти числа (введеные пользователем) (и мы её выводим в консоль)... Как то так...
_getch(); return 0; }
Code
#include <iostream> #include <conio.h> using namespace std; int sum( int a, int b) //тут эти числа передаются, делай в функции что хочешь) { cin >> a; cin >> b; return a+b; //тут возвращаем значение суммы из функции.. }
Вот что то типо того.
Добавлено (27.03.2012, 14:57) --------------------------------------------- Только насчет правильности разных файлов не знаю... В общем в одном файле должно выглядеть так:
Code
#include <iostream> #include <conio.h> using namespace std;
int sum( int a, int b){ //тут эти числа передаются, делай в функции что хочешь) // причем тут не обязательно те же названия переменных должны быть. Можно взять x и y. Главное чтоб одинаковый тип был. return a+b; //тут возвращаем значение суммы из функции.. }
int main(){ int a,b; cin>>a; //Ввод пользователя cin>>b; cout<<sum(a,b); //Тут функции посылается эти числа (введеные пользователем) (и мы её выводим в консоль).
_getch(); return 0; }
Сообщение отредактировал Snuux - Вторник, 27 Марта 2012, 15:11
А как пользоваться типом "Строка"? Я подключаю библу #include <string> Объявляю переменную string perem1;(кстати string у меня не подсвечивает, как все остальные типы) Когда я хочу сравнить эту переменную с какой-нибудь строкой,он выдаёт ошибку(типа для этой переменной необходим тип bool)А мне bool не нужен, мне нужен string))) FinderX - Android Аркада
Наркоманы какие-то. Какого **** реализацию функции пихать в хедер?
Quote (goldsphere)
string perem1;(кстати string у меня не подсвечивает, как все остальные типы) Когда я хочу сравнить эту переменную с какой-нибудь строкой,он выдаёт ошибку(типа для этой переменной необходим тип bool)А мне bool не нужен, мне нужен string)))
Накосячил значит где-то, код покажи. Многие вопросы по Windows отпадут, если посмотреть тут
goldsphere, Если ты сравниваешь две строки то используй тип char, и для сравнения используй функцию int strcmp(const char *str1, char *str2); Вот небольшой код
Code
#include <iostream> using namespace std; int main() { int i; char password[]="Hello, Neo"; char userPassword[10]; cout <<"Password-> "; cin>>userPassword; if ((i=strcmp(password, userPassword))==0) cout<<"You are right! "<<'\n'; else cout<<"You are wrong!"<<'\n'; return 0; }
программа сравнивает строку которую ты ввел, с заложенной в программе. Эта функция различает прописные и строчные функции, а чтобы не различала используй int stricmp(const char *str1, const char *str2); Источник усталости - не в теле, а в уме. Ты можешь гораздо больше, чем думаешь.
Сообщение отредактировал mopo - Вторник, 27 Марта 2012, 20:19
Нохчи, Просто тип string, в С++ мне не сильно нравиться, и зачем его использовать если можно и с типом char, все то же самое делать))) каждый использует то что ему больше нрааиться))) Источник усталости - не в теле, а в уме. Ты можешь гораздо больше, чем думаешь.
goldsphere, тип string у тебя не подсвечивается, потому что не является стандартным типом. Это всего лишь класс. И для него перегружены операторы. Используй оператор == . С ним так же работают и алгоритмы от STL.
Сообщение отредактировал DonKorleone - Вторник, 27 Марта 2012, 20:27
switch(rasa) { case 1: cout<<"Ваш выбор Люди!\n"; break; case 2: cout<<"Ваш выбор Демоны!\n"; break; case 3: cout<<"Ваш выбор Орки!\n"; break; case 4: cout<<"Ваш выбор Нежить!\n"; break; default:cout<<"Выберите сооответствующую цифру от 1 до 4"; }
cout<<"\nРесурсы на данный момент:\n"; cout<<"Золото: "<<all.gold<<endl; cout<<"Дерево: "<<all.forest<<endl; cout<<"Бриллианты: "<<all.diamond<<endl;
goldsphere, исправь рассы на расы. Оно пишется с одной с.
>>int rasa; Исправь на int race; Вообще мой тебе совет - найди программу переводчик если не знаешь английского (я вот промт использовал). И когда надо дать имя, переводи его на английский. Все, польза будет, потому что во-первых русские слова английским текстом - это дурной тон, а во-вторых - быстро выучишь кучу слов, что поможет при изучении английского Мой блог Вики DirectX
У меня ещё проблемка появилась(Суть проблемы ниже)(Урезанный код):
Я тут кое что поправил. У меня работает. int main() { //???? Unit Knight; // { Knight.name = "Knight"; Knight.damage = 23; Knight.hp = 120; Knight.mana = 0; Knight.power = 100;
Knight.print(); getch(); return 0; }}
Добавлено (28.03.2012, 18:49) --------------------------------------------- А если честно, я не понял зачем ты описание объекта заключил в фигурные скобки.
В данном случае скобка после строки "Unit Knight; //", и одна из скобок в самом конце программы будут лишними.
P.S. Опоздал с ответом))) Учусь программировать на C++)
Сообщение отредактировал AgentToxa - Среда, 28 Марта 2012, 18:55