有类成员时,什么时候可以前置声明.什么时候需要#include .
2012-02-16 14:51
155 查看
#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; } // 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 .
- #include <algorithm>中的algorithm 什么时候需要用到
- Servlet中的成员变量有什么特点,什么时候需要成员变量?
- C++中头文件中是包含include还是包含类的前置声明
- C++中的“include”,“namespace”以及“前置声明”
- 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember。对该方法的声明如下(摘抄于MSDN):
- 前置声明和Include以及预编译头
- 两个类A和B,A创建的对象可以计算两个整数的最大公约数,B创建的对象可以求最好公倍数,B类中成员变量是A类声明对象
- 不是什么时候都可以用栈来声明对象并使用(自动释放)——Delphi里到处都是编译器魔法,并且自动帮助实例化界面元素指针
- C++中头文件中是包含include还是包含类的前置声明
- 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember。对该方法的声明如下(摘抄于MSDN):
- 作业题,编写两个类:A和B,A创建的对象可以计算两个正整数的最大公约数,B创建的对象可以计算两个数的最小公倍数,要求:B类中有一个成员变量是A类声明的对象
- 为什么C++类定义中,数据成员不能被指定为自身类型,但可以是指向自身类型的指针或引用?为什么在类体内可以定义将静态成员声明为其所属类的类型呢 ?
- C++什么时候析构函数需要声明为虚函数
- 为什么static成员的类型可以是类本身?又为什么非static成员被限定声明为其自身类对象的指针或引用?
- var this.value 可在任意地方 声明 类成员变量。如果可以利用在C++ 那该有多好啊
- 使用反射动态调用类成员,需要Type类的一个方法:InvokeMember。对该方法的声明如下(摘抄于MSDN)
- C++学习总结_成员函数的声明和实现需要注意问题
- 飛飛(七十九)(补)将此类声明改为类模板声明,使得数据成员data1和data2可以是任何类型。增默认构造函数、
- [C++]在什么时候需要“#include string.h“