Я смущен в разработанном классе. Я был бы чрезвычайно благодарен, если бы был описан пример. Синтаксис: друг разработанный класс-имя;Как у нас есть объявление друга «friend developed-class-name»? как пример в C++?
-1
A
ответ
1
Разработано название класса только означает class
(или struct
) ключевое слово + фактическое название класса.
Используйте это так:
friend class Klass;
1
От n4140:
[class.friend]/3:
друг заявление, не объявить функцию должен иметь один из следующие формы:
друг разработанный тип-спецификатор;
Друг простой тип-спецификатор;
friend typename-specifier;
то есть пример:
class C;
typedef C Ct;
class X1 {
friend C; // OK: class C is a friend
};
class X2 {
friend Ct; // OK: class C is a friend
friend D; // error: no type-name D in scope
friend class D; // OK: elaborated-type-specifier declares new class
};
Итак: friend class D;
является примером разработанного-типа-спецификатор. Пока friend D;
не является и называется simple-type-specifier, который является новым с C++ 11.
0
Вот демонстративной программа
#include <iostream>
namespace usr
{
int B = 20;
class A
{
public:
A(int x = 0) : x(x) {}
friend class B; // using of elaborated type specifier
private:
int x;
};
class B
{
public:
std::ostream & out(const A &a, std::ostream &os = std::cout) const
{
return os << a.x;
}
};
}
int main()
{
class usr::B b; // using of elaborated type specifier
b.out(usr::A(10)) << ' ' << usr::B << std::endl;
}
Его выход
10 20
Ваш вопрос не имеет смысла. Почему бы не дать нам небольшой пример кода для работы? – Dennis
Адаптировано отсюда http://en.cppreference.com/w/cpp/language/friend Определяет класс, структуру или объединение, названный выработанным классом, как друга этого класса. Это означает, что декларации и определения членов друга могут обращаться к закрытым и защищенным членам этого класса ....... Мне нужен только пример C++. –
Вы хотите, чтобы мы написали пример использования ключевого слова 'friend'? Вам нужно провести некоторое исследование. Это не учебный сайт. – Dennis