比如:
//a.h
class A{
B* b;}.........
//b.h
class B:public A
{
}
//a.h
class A{
B* b;}.........
//b.h
class B:public A
{
}
解决方案 »
- 透明对话框问题
- ie插件的按钮如何实现
- 内存映射文件的读写?
- 如何在ie中点击页面上的链接时,直接打开与该链接文件类型关联的应用程序,而不弹出ie下载对话框?
- socket用完了后,必须要关闭吗?我在看一个服务器端程序,为什么除了发送错误,就不关SOCKET,直到该线程结束也不关
- 请问“向导”程序必须要有个主窗口来把它”弹”出来吗?我看到的文章大部分都是这么写的
- 动态create的控件,如果要做消息响应,是否不能通过classwizard ,只能手工添加?
- _variant_t类型怎么处理啊?
- 請問怎樣使用CDaoRecordset的addnew方法,最好舉個例子,先謝謝各位了
- 关于用VC进行串口通讯的方法和步骤向各位大虾请教?(尽量详细些)
- 开方用什么函数?
- 大家来点关于串口通信编程,和TCP/IP编程的网址
class CB;
class CA{
public:
CB *m_pB;
int a;
};class CB : public CA{
public:
int b;
};int main()
{
CB objB;
CA objA;
objA.m_pB = &objB;
objA.m_pB->b = 1;
printf("objB.b is %d", objB.b); return 0;
}
我們得到了3個結論:
1. 如果你以㆒個「基礎類別之指標」指向「衍生類別之物件」,那麼經由該指標你只能夠呼叫基礎類別所定義的函式。
雖然我們可以令pBase 實際指向CDerived 物件,
卻因為pBase 的型態("一個CBase* 指標")
使它只能夠呼叫BaseFunc(),不能夠呼叫DeriFunc()。
////////////如果从基类指向派生类只能调用基类的函数
2. 如果你以㆒個「衍生類別之指標」指向㆒個「基礎類別之物件」,你必須先做明顯的轉型動作(explicit cast)。這種作法很危險,不符合真實生活經驗,在程式設計也會帶給程式員困惑。
///////////如果从派生来指向基类,《《《這種作法很危險》》》
3. 如果基礎類別和衍生類別都定義了「相同名稱之成員函式」,那麼透過物件指標呼叫成員函式時,到底呼叫到哪㆒個函式,必須視該指標的原始型別而定,而不是視指標實際所指之物件的型別而定。這與第1 點其實意義相通。
//a.h
class B;
class A{
B* b;
}//b.h
#include "a.h"
class B:public A
{
int x;
}
//a.h
class A{
void* b;}.........
//b.h
class B:public A
{
}.......
A a;
B d;
a.b
可以这样用://a.h
class B;
class A{
B* b;}.........
//b.h
class B:public A
{
}这种技术在我研究过的一个脚本解释器中用得很多。
我想说的是,c++的东西,用得当,其乐无穷。
////a.h
class A{}
.......
//b.h
class B:public vector<A*>
{}
///
现在A中必须有一个指向B的指针,或者重新定义一个class,把这2个class包起来。
根据一个老外的java程序写相应的C++程序,写着写着就成这样了
class B;
对于指针变量来说,他占用的空间大小是固定的,
你定义的只是一个声明。
如果你不使用 B 的成员变量和成员函数,则不用包含类定义。
////a.h
class A{}
.......
//b.h
class B:public vector<A*>
{}
///
现在A中必须有一个指向B的指针,或者重新定义一个class,把这2个class包起来。
根据一个老外的java程序写相应的C++程序,写着写着就成这样了