C++中未定义类的引用。

在有时候因为类太大,需要在类在后面定义;

例如:

class Y{
	void f(X);
}; 

class X{
//一些成员数据和函数

};
//error

因为c++要求任何一个变量在引用之前必须声明。,在上述定义中我们可以调换两者的顺序来实现。

但是如果形成了循环?

class X{
	void f1(Y)
};
class Y{
	void f(X);
}; 
//error

这种就不能通过简单的调换顺序来通过编译器在调用之前必须声明的金科玉律了。

那么我们可以通过在上述中先声明?

class Y;
class X{
	void f1(Y)   //error
};
class Y{
	void f(X);
}; 

可是上述的代码中函数f1(Y)的参数是变量Y而这时候必须知道整个类Y的具体结构的。所以是不可行的。

所以我们通过将函数f1()中的参数Y改为

class Y;
class X{
	void f1(Y*)
};
class Y{
	void f(X);
}; 
//right

将上述参数类Y改为其指针之后就可行的因为编译器知道如何传递一个地址,这一地址是固定大小的。而不必要知道传递的是什么对象,即使是我们完全不知道需要传递的对象类型的大小。

但是这里函数f2()就可以使用类X作为参数 ,因为类X已经被完整的定义了。

C++中未定义类的引用。

时间: 2024-10-13 19:24:52

C++中未定义类的引用。的相关文章

telerik 控件 SCRIPT5007: 无法获取未定义或 null 引用的属性“documentElement” (IE 文档模式)

IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在Standards Mode下对于盒模型的解释和其他的标准浏览器是一样,但在Quirks Mode模式下则有很大差别,而在不声明Doctype的情况下,IE默认又是Quirks Mode.所以为兼容性考虑,我们可能需要获取当前的文档渲染方式.document.compatMode正好派上用场,它有两种可能的返回值:BackCompat和CSS1Compat.BackCompat:标准兼容模式关闭.浏览器客

c++中两个类互相引用的问题

最近在改一个C++程序的时候碰到一条警告信息,警告信息为:“ 删除指向不完整“Q2DTorusNode”类型的指针:没有调用析构函数                1> c:\users\lxw\desktop\dragonfly第二阶段实验\最终的实验版本\实验目录\dragonfly_modify\src\Q2DTorus.h(6) : 参见“Q2DTorusNode”的声明 ” 警告信息很是奇怪,其实出于强迫症的原因想要解决掉这个警告信息,而且从警告信息来看,程序也应该存在内存泄露的问题,

js中 $ 未定义 或者 “xxx”未定义

js中出现 $ 未定义 或者 "xxx"未定义 错误原因 : js传值时用的是el表达式,如果不加单引号就会出错,正确写法如下:

js在函数中未定义的变量的处理

<html> <head> <script type="text/javascript"> var z=1; function abc(){ x =123; var y=12; } abc(); alert(x); alert(y); </script> </head> <body> </body> </html> 可以正常打印出x的值:x为全局变量: <html> <he

C++中没有定义类的引用。

在有时候由于类太大.须要在类在后面定义: 比如: class Y{ void f(X); }; class X{ //一些成员数据和函数 }; //error 由于c++要求不论什么一个变量在引用之前必须声明. .在上述定义中我们能够调换两者的顺序来实现. 可是假设形成了循环? class X{ void f1(Y) }; class Y{ void f(X); }; //error 这样的就不能通过简单的调换顺序来通过编译器在调用之前必须声明的金科玉律了. 那么我们能够通过在上述中先声明? c

C++中两个类互相引用的解决方法

一.问题描述 现在有两个类A和B需要定义,定义A的时候需要用到B,定义B的时候需要用到A. 二.分析 A和B的定义和调用都放在一个文件中肯定是不可以的,这样就会造成两个循环调用的死循环. 根本原因是:定义A的时候,A的里面有B,所以就需要去查看B的占空间大小,但是查看的时候又发现需要知道A的占空间大小,造成死循环. 解决方法1: (1)写两个头文件A.h和B.h分别用于声明类A和B: (2)写两个.cpp文件分别用于定义类A和B: (3)在A和B的头文件中分别导入对方的头文件. 解决方法2: (

php中未定义变量的使用

在php中,若变量$test没有定义,则: empty($test)返回true: !empty($test)返回false: 具体可参考http://www.jb51.net/article/24666.htm

ASP.NET中母版页引用外部js或css文件无效,提示对象未定义解决方法

最近做网站用了一个js+css实现的带有二级菜单的导航条,在母版页创建好后,子页面调用出现了许多奇怪的问题,多方查证后的最终解决方案和大家分享下.... 1.路径问题 如果是一个单独的aspx页面调用此文件路径会是 1 <link type="text/css" rel="stylesheet" href="navigator/css/shou.css" /> 2 <script type="text/javascri

编译lua5.3.2报错提示libreadline.so存在未定义的引用解决方法

从官网上下载5.3.2的源码后,make linux进行编译,提示报错: gcc -std=gnu99 -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline /usr/local/lib/libreadline.so:对‘tputs’未定义的引用 /usr/local/lib/libreadline.so:对‘tgoto’未定义的引用 /usr/local/lib/libreadline.so:对‘tgetflag’未定义的引用 /usr/local/