Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 03.02.2018
Сообщений: 6
1

Friend Function - C++

03.02.2018, 16:31. Показов 1400. Ответов 5

Author24 — интернет-сервис помощи студентам
мне нужно введенную строчку передать в библиотеку , танцевал с бубном со всех сторон может кто помоч?



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#ifndef LIBWORD_H
#define LIBWORD_H
 
class Word
 
    friend void funcX (char);
 
private:
 
    char a[1000];
 
public:
 
    void writeWord(void);
    void printWord(void);
 
};
 
void funcX (char);
 
#endif
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
30
31
#include "libword.h"
#include <iostream>
#include <cstring>
 
using namespace std;
 
 
 
 
void Word::writeWord (void)
 
{
 
    gets(a);
}
 
void Word::printWord (void)
 
{
    puts(a);
 
}
 
 
 
void funcX (char)
 
{
 
    puts(a);
}


кусок главной программы:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
 
 
    cout<<"Start programm"<<endl;
 
    int x=1;
 
    //Ввод вывод строки
    Word ObjectX;
 
    ObjectX.writeWord();
    ObjectX.printWord();
 
 
 
 
    funcX();
 
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.02.2018, 16:31
Ответы с готовыми решениями:

C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be declared friend
выкидывает C:\Dev-Cpp\lib\vector.h `ostream' is neither function nor member function; cannot be...

friend function
После добавления дружественной ф-ции sum( а она для сложения salary у человека, которого я выберу)...

Friend Function
Я не очень понимаю как пользаватса Friend функцыей Class.h #include &lt;stdio.h&gt; #include...

friend function
Помогите плз разобраться: Когда я делаю инкремент &quot;х&quot; через закрытые функции класса - все работает...

5
875 / 461 / 91
Регистрация: 10.06.2014
Сообщений: 2,669
03.02.2018, 16:48 2
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
30
31
32
33
#include <iostream>
 
#ifndef LIBWORD_H
#define LIBWORD_H
 
class Word
{
    friend std::istream& operator >> (std::istream& i, Word& word);
private:
    char a[1000];
 
public:
 
    void writeWord(void);
    void printWord(void);
 
};
 
std::istream& operator >> (std::istream& i, Word& word)
{
    i >> word.a;
    return i;
}
 
 
#endif
 
//entry point
int main()
{
    Word word;
    std::cin >> word;
}
1
0 / 0 / 0
Регистрация: 03.02.2018
Сообщений: 6
03.02.2018, 19:41  [ТС] 3
C:\Users\qwerty\Documents\untitled\libword.h:13: ошибка: 'istream' in namespace 'std' does not name a type
friend std::istream& operator >> (std::istream& i, Word& ObjectX);
^
Миниатюры
Friend Function - C++  
0
1642 / 1091 / 487
Регистрация: 17.07.2012
Сообщений: 5,345
03.02.2018, 19:55 4
Тут скомпилилось.
http://rextester.com/l/cpp_online_compiler_visual
Тут тоже.
http://rextester.com/l/cpp_online_compiler_gcc

Добавлено через 1 минуту
Victorqwerty, вы наверно в хедере #include <iostream> не написали.
0
0 / 0 / 0
Регистрация: 03.02.2018
Сообщений: 6
03.02.2018, 20:51  [ТС] 5
ох а можно без библиотек std обойтись ????? мне как бы нужно передать не строку а массив char состоящий из символов,
да так чтобы можно было puts(a) выводить
0
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
03.02.2018, 22:38 6
Лучший ответ Сообщение было отмечено Victorqwerty как решение

Решение

Цитата Сообщение от Victorqwerty Посмотреть сообщение
C++
1
gets(a);
В чём компилируете? Если в студии начиная с 2015, то функцию gets объявили как устаревшую и вырезали оттуда, используйте тогда вместо неё аналог gets_s.
Замените gets(a); на:
C++
1
gets_s(a, 1000);
В первом коде вы пропустили фигурную скобку после class Word (4 строка)

Далее у вас дружественная функция funcX для класса Word не является его членом, ей не передаётся неявно указатель this и следовательно она не может в своём теле обращаться к массиву-члену a класса Word без самого экземпляра класса. Передавайте ей, например ссылку на объект:
C++
1
2
3
void funcX (Word& ob) {
    puts(ob.a);
}
И да, подключите заголовок cstdio во втором коде #include <cstdio>
1
03.02.2018, 22:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.02.2018, 22:38
Помогаю со студенческими работами здесь

Friend function
Нужно сделать функции Length и Angle френдовыми для другого класса. Как это запилить? Sect.h...

Friend function and Overload <<(>>)
#include &lt;iostream&gt; using namespace std; class array{ private: unsigned int size; int...

Virtual friend function
&lt;&lt;Виртуальный метод не может объявляться с модификатором static, но может быть объявлен как...

friend function C++ and operator ::
привет подскажите пожалуйста в чем ошибка? где не понимаю? допустим есть класс class...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru