Chinaunix首页 | 论坛 | 博客
  • 博客访问: 454958
  • 博文数量: 724
  • 博客积分: 40000
  • 博客等级: 大将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 14:47
文章分类

全部博文(724)

文章存档

2011年(1)

2008年(723)

我的朋友

分类:

2008-10-13 17:23:41


同意!自身类的对象,是不可以作该类的成员的(不管是直接还是间接),但是指针和引用可以! ( tomyne 发表于 2002-12-11 14:33:00)

Thank sunshineormer@msn.com ( 林山 发表于 2002-11-22 9:41:00)

我说的初始化是先在内存中生成类的定义 ( sunshineormer@msn.com 发表于 2002-11-21 14:09:00)

#include 
#include 
using namespace std;
class CA;

class CB
{
public:
CB() {};
~CB() {};
void Display () 
{
string s = "This is Class B";
cout< }
CA* Aobject;
};

class CA
{
public:
CA() {};
~CA() {};
CB Bobject;
void Display () 
{
cout<<"This is Class A"< }

};

int main()
{

CA AObject;

return 0;
} ( sunshineormer 发表于 2002-11-21 14:07:00)

/*
林山:
  你不觉得你的定义是一个死循环吗?
  在编译初始化的时候,对于类内部的类对象(成员函数)是先初始化的(注意,是对象,而不是对象指针),
你的程序中是AClass 变量Bobject
先调用bobject的初始化函数,然后B又调用其中A的初始化函数,以此类推。这样,编译器就无法得到B类的大小
,自然编译也就失败了,对于一个未知大小的类,自然是
 undefined class 
  用指针可以,
  */ ( sunshineormer 发表于 2002-11-21 14:07:00)

我试了一下,还是有点问题.请大家指教.源代码如下
#include "stdafx.h"
class BClass;
class AClass;

class AClass
{
public:
 AClass() {};
 ~AClass() {};
 BClass Bobject;
void Display () {printf ("This is Class A\n");}

};

class BClass
{
public:
BClass() {};
~BClass() {};
void Display () {printf ("\nThis is Class B\n");};
AClass Aobject;
};


int main(int argc, char* argv[])
{
printf("Hello World!\n");
BClass BObject;
BObject.Aobject.Display();
return 0;
}
编译提示说 "error C2079: 'Bobject' uses undefined class 'BClass'"

( 林山 发表于 2002-11-21 10:23:00)

敢问头文件前的宏定义和#include "XXX.h"是什么关系?MyView.h中的#include "MyDialog.h"由于_MYDIALOG_H__已经定义,所以不再起作用 这句话怎么理解呢.请指教,谢谢! ( 林山 发表于 2002-11-21 9:14:00)

.......................................................

--------------------next---------------------

阅读(211) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~