美文网首页
C++11:friend 声明扩展

C++11:friend 声明扩展

作者: fck_13 | 来源:发表于2020-01-11 00:20 被阅读0次

对于friend的用法,C++11新添加了下面两个

friend simple-type-specifier ; //(1)
friend typename-specifier ;    //(2)

对于(1),在C++11之前,下面的代码是无法编译通过的

#include <iostream>

class B
{};

class A
{
  int b;
  friend B;
};

int main()
{
  return 0;
}

你会得到如下的编译错误:

/home/insights/insights.cpp:8:10: warning: unelaborated friend declaration is a C++11 extension; specify 'class' to befriend 'B' [-Wc++11-extensions]
  friend B;
         ^
         class
1 warning generated.

要想编译成功的化,需要将friend B;改为friend class B;
对于(2),C++11之前同样无法编译通过

#include <iostream>
#include <vector>

class B
{};

typedef std::vector<B> BVec;

class A
{
  int b;
  friend typename BVec::value_type;
};

int main()
{
  return 0;
}

编译错误为:

/home/insights/insights.cpp:12:10: warning: 'typename' occurs outside of a template [-Wc++11-extensions]
  friend typename BVec::value_type;
         ^~~~~~~~~
/home/insights/insights.cpp:12:10: warning: unelaborated friend declaration is a C++11 extension; specify 'class' to befriend 'typename BVec::value_type' (aka 'B') [-Wc++11-extensions]
  friend typename BVec::value_type;
         ^
         class
2 warnings generated.

相关文章

  • C++11:friend 声明扩展

    对于friend的用法,C++11新添加了下面两个 对于(1),在C++11之前,下面的代码是无法编译通过的 你会...

  • 深入理解C++11 2.9 扩展的friend语法

    friend关键字用于声明类的友元,友元可以无视类中成员的属性,无论成员是public、protected或是pr...

  • 扩展 - 代理 - 通知

    扩展 一般扩展做什么?? 1、声明私有属性2、声明私有方法3、声明私有成员变量 扩展特点 编译时决议只以声明的形式...

  • iOS之扩展和代理

    扩展 Q:我们一般用扩展做什么? A:声明私有属性,声明私有方法(没什么意义),声明私有成员变量 Q:扩展的特点 ...

  • 扩展方法

    扩展方法: 扩展方法的类必须声明为static 扩展方法本身也必须声明为static 扩展方法必须包含关键字thi...

  • OC扩展、代理、通知

    二、扩展 1.一般用扩展做什么? 声明私有属性,声明方法(没什么意义),声明私有成员变量 2.扩展的特点 编译时决...

  • 22章:类扩展

    类扩展 .h implemention 涉及实现细节的属性和方法,才在类扩展中声明。类扩展是一组私有的声明。只有类...

  • 2017年第三届PHP开发者大会总结(三)php-x篇.md

    使用c++11开发php7扩展(韩天峰) 简单说就是天峰在多年的php扩展开发中,感受到基于c的zend api十...

  • 扩展extension 面试问题

    扩展与分类的区别 扩展 只有声明 没有实现分类 有声明 有实现 分类 是运行时决议 扩展是编译时决议 系统可以添加...

  • iOS之Protocol,Extention,Category

    -Protocol,协议-Extention,扩展,声明-Category范畴,策略,分类(很像扩展概念) Pro...

网友评论

      本文标题:C++11:friend 声明扩展

      本文链接:https://www.haomeiwen.com/subject/wcqvactx.html