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已经被完整的定义了。

时间: 2024-08-10 19:19:05

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

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

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

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

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

Java——定义类,引用类数据类型,集合类型(array list)

一.定义类 1.类的格式 public class 类名{ // 类名最好和文件名一样 数据类型 属性名称1: 数据类型 属性名称2: -} // phone.java public class Phone { // 属性 String brand; // 品牌型号 String color; // 颜色 double size; // 尺寸大小 } 2.类的调用 p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-he

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: (

C++中如何定义类和对象?

在C++语言中,对象的类型被称为类,类代表了某一批对象的共性和特征. 类是对象的抽象,而对象是类的具体实例.如同C中的结构体一样,我们要先定义一个结构体,再使用结构体去定义一个变量.同一个结构体可以定义出多个不同的结构体变量.我们要使用类也是如此. 类是对象的模板,如同我们在建造房屋时候的图纸,然后我们就可以利用这个图纸去建造许多个房屋.我们可以使用别人已经定义好的类.更多的时候,我们要根据需要定义自己的类. 定义类 定义结构体的方法: struct Student { char name[12

C# 面向对象编程中如何定义类,理解各个关键字的作用

第一:基本类的定义 1 class Person 2 { 3 //我是一个Person类,默认类的修饰符是intenal,只能在当前程序集中访问 4 } 和上面案例一样的类定义如下,二者意思一样 1 internal class Person1 2 { 3 //我是一个Person1类,允许当前程序集中访问,其它项目不能访问 4 } 第二:声明可以在当前程序集中访问也可以在其它项目中访问的类,定义如下 1 public class Person2 2 { 3 //我是一个Person2类,可以在

属性只能在构造函数中定义,在其他函数中不能定义,只能引用,

1 class aa(): 2 3 def __init__(self): 4 self.cc = 6 5 def do(self): 6 self.bb=5#无效,只相当于局部变量 7 def do1(self): 8 print (self.bb) 9 aaa=aa() 10 print (dir(aa))#无cc属性 11 print (dir(aaa))#有cc属性 12 #print (aaa.bb)#报错, 13 #aaa.do1()#报错

JS定义类的六种方式详解

转载自: http://www.jb51.net/article/84089.htm 在前端开发中,经常需要定义JS类.那么在JavaScript中,定义类的方式有几种,分别是什么呢?本文就JS定义类的六中方式说明如下(案例说明): 1.工厂方式 ? 1 2 3 4 5 6 7 8 9 10 11 function Car(){ var ocar = new Object; ocar.color = "blue"; ocar.doors = 4; ocar.showColor = fu

get_declared_classes--返回由已定义类的名字所组成的数组

array get_declared_classes ( void ) 返回由当前脚本中已定义类的名字组成的数组. 需要注意的是额外类的出现依赖于你已编译到 PHP 中的库.这意味着你不能使用这些类名定义自己的类. <?phpheader("Content-type:text/html;charset=utf-8");class A{    public function __construct(){        echo '这是类A的构造函数<br>';    }