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

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

Войти
Регистрация
Восстановить пароль
 
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
#1

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

01.05.2012, 17:14. Просмотров 271. Ответов 9
Метки нет (Все метки)

Доброго дня. 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.05.2012, 17:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Передача struct в перегруженную ф-ю. (C++):

Передача struct по указателю - C++
Всем привет, Пытаюсь передать массив данных типа структуры: class BitmapImage { public: struct rgbQuad*...

Написать перегруженную функцию - C++
Написать перегруженные функции и основную программу, которая их вызывает. 1. для сложения целых чисел; 2. для сложения комплексных...

Написать перегруженную функцию - C++
Написать перегруженную функцию для возведения в степень и извлечения корня.

Перегруженную функцию переделать в виртуальную - C++
Сам как не знаю сделать пожалуйста помогите)) Есть перегруженная функция, нужно сделать из нее виртуальную функцию. Даже не обязательно из...

Класс Integer и опредлить перегруженную функцию - C++
Здравстуйте у меня вот такое задание: Создать класс целых чисел integer. Определить перегруженную функцию, возвращающую максимальное...

Как переопределить перегруженную функцию в производном классе? - C++
Как переопределить перегруженную функцию в производном классе? #include &lt;iostream&gt; class Number { public: virtual Number*...

9
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 16
01.05.2012, 17:29 #2
А в printing.h где подключаешь iostream
попробуй #include <iostream>
и добавь #include <string>
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
01.05.2012, 17:39  [ТС] #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]
0
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 16
01.05.2012, 17:40 #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;
}
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
01.05.2012, 17:54  [ТС] #5
Состав ошибок тот же .
0
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 16
01.05.2012, 18:20 #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;
}
1
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
01.05.2012, 18:26  [ТС] #7
Да , теперь работает.
программа начинает работать с функции main а там видно сразу обращение к big[0] хотя в памяти этого ещё и нет
Как вы определили ?
0
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 16
01.05.2012, 18:32 #8
образ в памяти уже создался, обычно перед использованием написан код объявления, а тут не было =)
0
scofielcl
4 / 4 / 0
Регистрация: 11.09.2011
Сообщений: 145
01.05.2012, 18:39  [ТС] #9
Следовательно объявление образа в printing.h силы не имело.
Спасибо за подсказку.
0
osrcproject
3 / 3 / 0
Регистрация: 01.05.2012
Сообщений: 16
01.05.2012, 18:48 #10
всё что написанно в pintting.h знает только транслятор, а реальная двоичная программа уже начинает работать как бы вслепую с адреса под меткой main, это так образно говорю и возможно даже не правильно, лучше не обращайте на мои высказывания внимание
0
01.05.2012, 18:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2012, 18:48
Привет! Вот еще темы с ответами:

Создать перегруженную операцию operator= для копирования строк - C++
Ввести с клавиатуры строку символов S1. Признак окончания ввода строки - нажатие клавиши &quot;Ввод&quot;. Программа должна содержать перегруженную...

Производный класс не видит перегруженную операцию базового класса - C++
Подскажите пожалуйста, почему производный класс, а именно его объект не видит перегруженную операцию, в данном случае это префиксные...

Создать перегруженную функцию для вывода нечетных элементов массива - C++
Сделать через перегруженную функцию: Задан массив целых чисел. Вывести на экран элементы, являющиеся нечетными числами. Реализовать для...

Создать перегруженную функцию mas(), выводящую одномерный статический числовой массив - C++
Может кто помочь пожалуйста, надо создать функцию mas(), которая выводит одномерный статический числовой массив объектов, символьный массив...


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

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

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