小编mya*_*333的帖子

转发声明vs包含在Google c ++样式指南中

谷歌c ++风格有以下几点.我不明白为什么前向声明会调用f(void*).

可能很难确定是否需要前向声明或完整#include.用前向声明替换#include可以默默地改变代码的含义:

  // b.h:
  struct B {};
  struct D : B {};

  // good_user.cc:
  #include "b.h"
  void f(B*);
  void f(void*);
  void test(D* x) { f(x); }  // calls f(B*)
Run Code Online (Sandbox Code Playgroud)

如果#include被B和D的forward decls替换,test()将调用f(void*).

c++ include forward-declaration

2
推荐指数
1
解决办法
123
查看次数

标签 统计

c++ ×1

forward-declaration ×1

include ×1