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

Передача struct в перегруженную ф-ю. - C++

Восстановить пароль Регистрация
 
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
01.05.2012, 17:14     Передача struct в перегруженную ф-ю. #1
Доброго дня. NetBeans не выделяет ошибок , но не компилирует.
Описание структуры и функции в printing.h
Тело функции в printing.cpp
Вызов функции в main.cpp
Попрошу подсказать , что задано неверно.

printing.cpp
C++
1
2
3
4
5
6
7
8
#include "printing.h"
 
void print(coc big,int b){
    for(int i=0;i<b;i++){
    if(big[i].old < 15) cout<<"User "<<big[0].name <<" is not old!";
    else cout<< "User "<<big[i].name <<" is old!";
    }
}
printing.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#ifndef PRINTING_H
#define PRINTING_H
 
#include <cstdlib>
#include "iostream"
#include "time.h"
 
using namespace std;
 
       struct coc{
        string name;
        int old;
    }; 
 
    struct coc big[2];
    
void print(coc big,int b);  
#endif  /* PRINTING_H */
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "printing.h"
 
int main() {
    
    big[0].name = "Alia";
    big[0].old = 10;
    
    big[1].name = "Alisa";
    big[1].old = 19;
     
    print(big,2);
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2012, 17:14     Передача struct в перегруженную ф-ю.
Посмотрите здесь:

Класс Integer и опредлить перегруженную функцию C++
Передача struct по указателю C++
C++ Производный класс не видит перегруженную операцию базового класса
C++ Написать перегруженную функцию
Напишите перегруженную функцию power (), которая принимает два целочисленных параметра типа int и возвращает целочисленное значение типа int C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 14
01.05.2012, 17:29     Передача struct в перегруженную ф-ю. #2
А в printing.h где подключаешь iostream
попробуй #include <iostream>
и добавь #include <string>
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
01.05.2012, 17:39  [ТС]     Передача struct в перегруженную ф-ю. #3
C++
1
2
3
printing.cpp:5: error: no match for ‘operator[]’ in ‘big[i]’
printing.cpp:5: error: no match for ‘operator[]’ in ‘big[0]’
printing.cpp:6: error: no match for ‘operator[]’ in ‘big[i]
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 14
01.05.2012, 17:40     Передача struct в перегруженную ф-ю. #4
printing.cpp
C++
1
2
3
4
5
6
7
8
#include "printing.h"
 
void print(coc big,int b){
    for(int i=0;i<b;i++){
    if(big[i].old < 15) cout<<"User "<<big[0].name <<" is not old!";
    else cout<< "User "<<big[i].name <<" is old!";
    }
}
printing.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef PRINTING_H
#define PRINTING_H
 
#include <cstdlib>
#include <iostream>
#include <string>
#include "time.h"
 
using namespace std;
 
       struct coc{
        string name;
        int old;
    }; 
 
    coc big[2];
    
void print(coc big,int b);  
#endif  /* PRINTING_H */
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "printing.h"
 
int main() {
    
    big[0].name = "Alia";
    big[0].old = 10;
    
    big[1].name = "Alisa";
    big[1].old = 19;
     
    print(big,2);
 
    return 0;
}
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
01.05.2012, 17:54  [ТС]     Передача struct в перегруженную ф-ю. #5
Состав ошибок тот же .
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 14
01.05.2012, 18:20     Передача struct в перегруженную ф-ю. #6
а какие ошибки то?
плюс программа начинает работать с функции main а там видно сразу обращение к big[0] хотя в памяти этого ещё и нет. Перенеси coc big[2] в начало функции main()

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
#include "printing.h"
 
void print(coc *big,int b){     // сюда указатель
    for(int i=0;i<b;i++){
    if(big[i].old < 15) cout<<"User "<<big[0].name <<" is not old!";
    else cout<< "User "<<big[i].name <<" is old!";
    }
}
printing.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#ifndef PRINTING_H
#define PRINTING_H
 
#include <cstdlib>
#include <iostream>
#include <string>
#include "time.h"
 
using namespace std;
 
       struct coc{
        string name;
        int old;
    }; 
    
void print(coc *big,int b);  
#endif  /* PRINTING_H */
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include "printing.h"
 
int main() {
    coc big[2];
    big[0].name = "Alia";
    big[0].old = 10;
    
    big[1].name = "Alisa";
    big[1].old = 19;
     
    print(big,2); 
 
    return 0;
}
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
01.05.2012, 18:26  [ТС]     Передача struct в перегруженную ф-ю. #7
Да , теперь работает.
программа начинает работать с функции main а там видно сразу обращение к big[0] хотя в памяти этого ещё и нет
Как вы определили ?
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 14
01.05.2012, 18:32     Передача struct в перегруженную ф-ю. #8
образ в памяти уже создался, обычно перед использованием написан код объявления, а тут не было =)
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 143
01.05.2012, 18:39  [ТС]     Передача struct в перегруженную ф-ю. #9
Следовательно объявление образа в printing.h силы не имело.
Спасибо за подсказку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2012, 18:48     Передача struct в перегруженную ф-ю.
Еще ссылки по теме:

не получается написать перегруженную функцию, которая возвращает значение в зависимости от набора формальных C++
C++ Написать перегруженную функцию
C++ Создать перегруженную операцию operator= для копирования строк

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

Или воспользуйтесь поиском по форуму:
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 14
01.05.2012, 18:48     Передача struct в перегруженную ф-ю. #10
всё что написанно в pintting.h знает только транслятор, а реальная двоичная программа уже начинает работать как бы вслепую с адреса под меткой main, это так образно говорю и возможно даже не правильно, лучше не обращайте на мои высказывания внимание
Yandex
Объявления
01.05.2012, 18:48     Передача struct в перегруженную ф-ю.
Ответ Создать тему
Опции темы

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