不同namespace的forward declaration

C++中的forward declaration可以减少文件之间的依赖,加快编译速度。

在相同的namespace中,例如类B包含一个指向类A的指针或引用,类A的forward declaration写法如下:

// b.hclass A;
class B
{
  A *pa;
};

今天遇到一个问题,就是A和B在不同的namespace中,不能按上面的写法来写。

正确的写法是在B的头文件写出A所在的namespace然后把前置声明放进去,写法如下:

// a.hnamespace top
{
namespace first
{
class A
{};
}
}
// b.h
namespace top
{
// forward declaration of class A
namespace first
{
class A;
}
namespace second
{
class B
{
  first::A *pa;
};
}
}
时间: 2024-10-31 05:01:33

不同namespace的forward declaration的相关文章

解决QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct "Ui::Widget" 等莫名奇妙错误

今天在进行QT Widget的UI设计时,改了下Widget的对象名,然后在多次成功编译运行后,执行清理,重新构建,就出现了好多莫名奇妙的错误: widget.h:12: 错误:forward declaration of 'struct Ui::Widget' widget.cpp:8: 错误:invalid use of incomplete type 'struct Ui::Widget' 网上搜索发现是每当你新键一个 QT设计界面, QT会自动生成yyy.ui文件,如Widget.ui,

解决QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct "Ui::Widget" 等莫名奇异错误

今天在进行QT Widget的UI设计时,改了下Widget的对象名,然后在多次成功编译执行后,执行清理,又一次构建,就出现了好多莫名奇异的错误: widget.h:12: 错误:forward declaration of 'struct Ui::Widget' widget.cpp:8: 错误:invalid use of incomplete type 'struct Ui::Widget' 网上搜索发现是每当你新键一个 QT设计界面, QT会自己主动生成yyy.ui文件,如Widget.

QT学习之forward declaration of 'struct Ui::xxx';invalid use of incomplete struct "Ui::Widget"

解决QT:forward declaration of 'struct Ui::xxx';invalid use of incomplete struct "Ui::Widget" 等莫名奇妙错误 今天在进行QT Widget的UI设计时,改了下Widget的对象名,然后在多次成功编译运行后,执行清理,重新构建,就出现了好多莫名奇妙的错误: widget.h:12: 错误:forward declaration of 'struct Ui::Widget' widget.cpp:8:

Receiver type ‘X’ for instance message is a forward declaration

本文出自:http://blog.csdn.net/svitter 实验环境:Myeclipse10 + tomcat7.0 有时间会写windows和linux下的tomcat配置,现在时间有限,暂且不写了..有些东西也是没有理解透彻. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <%@ page language="java" contentType="

Receiver &#39;NSManagedObjectContext&#39; for class message is a forward declaration 错误的解决方案

All the CoreData header files are imported in App_Prefix.pch, so the CoreData classes will be available throughout your Project, so you don't have to manually import the header in the files you need them. So open up Xcode and look for some file like 

Receiver type &#39;XXX&#39; for instance message is a forward declaration

今天遇到这个错误.刚开始字体太大,没显示全,后来调小字体之后看到了完整提示信息: 之后就忽然想起没引入相关的类,添加 #import "RDVTabBarItem.h" 就行了. Receiver type 'XXX' for instance message is a forward declaration

forward declaration of class 错误

在使用Qt的时候遇到这个错误,查了一下发现,是因为我没有正确的使用前置声明. 1 #ifndef FIRSTPAGE_H 2 #define FIRSTPAGE_H 3 4 #include "ui_dialog.h" 5 //#include <QWizardPage> 6 class QWizardPage; 7 8 class FirstPage : public Ui::Dialog, public QWizardPage 9 { 10 public: 11 Fir

使用friend和forward declaration解决循环引用的问题

friend(友元)可以干什么 修饰对象之一:类 假如B是A的友元,B的成员函数可以访问A的所有成员,包括protect和private成员变量和成员函数,示例: class A { friend class B }; 修饰对象之二:普通函数 普通函数F是A的友元函数,则这个普通函数可以访问A的所有成员,示例: class A { friend void ::GlobalFunc(); } 修饰对象之三:其它类的成员函数 成员函数F是A的友元函数,则这个成员函数可以访问A的所有成员,示例: cl

TB log 的实现

1 : 首先定义一个接口类  ITBCAFLog /*------------------------------------------------------------------------------------------------------------------------------*/ /*! * \file ITBCAFLog.hpp * * \brief This file contains ITBCAFLog interface definition. * * Co