有类成员时,什么时候可以前置声明.什么时候需要#include .
2014-01-26 13:54
281 查看
有类成员时,什么时候可以前置声明.什么时候需要#include .
分类: C++ 基础篇2012-02-1614:51 360人阅读 评论(0) 收藏 举报
classincludec
[cpp] view
plaincopy
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
// *************************************
class A; //前置声明
class B : public A
{
};
int main()
{
}
// error C2504: 'A' : base class undefined 需要A的定义
// *************************************
class A; //前置声明
class B
{
A pa;
};
int main()
{
B b;
}
//error C2079: 'B::pa' uses undefined class 'A' 需要A的定义
// *************************************
class A; //前置声明
class B
{
A* pa;
};
int main()
{
B b;
}
// 正确 只需要指明类型,不需要定义
// *************************************
class A; //前置声明
class B
{
void func1(const A* pa) {};
void func2(A& a) {};
void func3(const A& a) {};
void func(A a) {};
};
int main()
{
B b;
}
<span style="font-family:Arial;BACKGROUND-COLOR: #ffffff"></span>// error C2027: use of undefined type 'A'
// *************************************
class A; //前置声明
class B
{
void func1(const A* pa);
void func2(A& a);
void func3(const A& a);
void func(A a);
};
int main()
{
B b;
}
//如果只有声明的情况下是正确的,
//因为在函数定义的时候,需要知道类A的大小.
相关文章推荐
- 有类成员时,什么时候可以前置声明.什么时候需要#include .
- 【OC复合题】之定义一个学生类,需要有姓名,年龄,考试成绩三个成员属性,创建5个对象,属性可以任意值。(Objective-C)
- 什么时候可以不再需要换SIM卡
- 项目-两个成员的类模板将类声明改为类模板声明,使得数据成员data1和data2可以是任何类型
- C++类中使用前置声明和使用include包含头文件的感想
- C++ 前置声明和include引起的问题
- 为什么static成员的类型可以是类本身?又为什么非static成员被限定声明为其自身类对象的指针或引用?
- 将类声明改为类模板声明,使得数据成员data1和data2可以是任何类型
- make[1]: *** 没有规则可以创建“arch/x86/syscalls/../include/generated/uapi/asm/unistd_32.h”需要的目标“/usr/src/lin
- 什么时候声明数组可不用初始化便可以使用
- 编译内核出现:没有规则可以创建kernel.release需要的目标include/config/auto.conf
- c++ 父类成员函数的参数中有子类类型的对象 (前置声明解决)
- #include <algorithm>中的algorithm 什么时候需要用到
- Servlet中的成员变量有什么特点,什么时候需要成员变量?
- C++中的“include”,“namespace”以及“前置声明”
- C++中头文件中是包含include还是包含类的前置声明
- 前置声明和Include以及预编译头
- 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember。对该方法的声明如下(摘抄于MSDN):
- 两个类A和B,A创建的对象可以计算两个整数的最大公约数,B创建的对象可以求最好公倍数,B类中成员变量是A类声明对象
- 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember。对该方法的声明如下(摘抄于MSDN):