C++可以在类中定义一个类吗?

比如像下面这样:
图片说明

c++

7个回答

完全可以
注意:内部类可以访问外部类的私有成员,外部类不能访问内部类的私有成员!

zuishikonghuan
zuishikonghuan 回复篮子悠悠: 谁说不行的,我要是拿出来一个没有友元就能访问的你怎么说= =
大约 4 年之前 回复
u013078616
篮子悠悠 内部类可以访问外部类的私有成员?误人子弟,嵌套只是结构上的,外部类必须声明内部类为友元,不然和2个类分开些没有什么区别
大约 4 年之前 回复

可以,嵌套类有以下性质:

一、**可见性**
嵌套类对于外围类:

嵌套类仅仅是声明在外围类内部的类型,而不是外围类的成员

外围类不具备嵌套类所定义的成员

对于外围类来说,嵌套类和其他的类没有任何区别;外围类能访问嵌套类对象的public成员,不能访问嵌套类对象的protected及private成员

外围类对于嵌套类

嵌套类不具备外围类所定义的成员

嵌套类能访问外围类的public成员,不能访问外围类的protected及private成员

嵌套类对于外围类外部的作用域

无论嵌套类声明为public、protected还是private,嵌套类对于外围类任何成员可见

当嵌套类在外围类中声明为public时,对外围类之外的作用域可见,外围类之外的作用域可通过“::”访问嵌套类;

当嵌套类在外围类中声明为protected或private时,对外围类之外的作用域不可见

二、**继承性**

1.下面列出了嵌套类在基类中三种访问属性和继承的三种方式共9总组合,继承之后嵌套类在派生类中的访问属性

表

2.结合1和上文的“可见性”就可得出当派生类作为嵌套类的外围类,嵌套类和外围类之间,嵌套类和外围类之外的作用域之间的可见性了;

可以呀,就像在结构体里申明结构体一样,不过好像通常不这样用。

嵌套类的概念,相当于一个内部类。

可以的,不过看起来比较别扭

可以 不过这样可读性不是很好

在成员函数里面或在所属的类中,可以定义该成员函数的对象吗?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C++可以在类中定义一个类吗?
比如像下面这样:n![图片说明](https://img-ask.csdn.net/upload/201508/05/1438769880_915542.png)
java菜鸟:可以在一个类中定义其他类的对象吗
最近才开始学java,遇到一个问题:假如两个类 class S1 ,class S2 ,可以在S2的构造函数中定义一个对象S1 s1=new S1();吗?rn多谢!
类的数据成员可以在类的定义中直接定义吗?
class ABCrnrnpublic:rn............rnprivate:rn int a=1;rn int b=2;rn int c=3;rnrn这样定义可不可以?rn因为我看到书上写类的静态数据成员不能直接在类中定义,是不是普通的数据成员也不可以?只要涉及到内存分配?
类中能定义另一个类的对象吗?
class B;rnclass Arnrn B b;rn;rnclass Brnrn A a;rn;rnrnvoid main()rnrnrn编译器报错。rn要怎么改?有多少钟改法?为什么要这么改?
类可以定义在函数体内吗?
比如下面这段代码是可以编译运行的:rn[code=C/C++]rn#include rnusing namespace std;rnrnint main()rnrn class crn rn public:rn int a;rn ;rnrn c cc;rn rn cc.a=0;rn cout< rn#include rnusing namespace std;rnrnint main()rnrn class crn rn public:rn int a;rn ;rnrn c cc;rn cc.a=0;rnrn listc_list;rn c_list.push_back(cc);rnrn cout<a;rn return 0;rnrn//编译会有提示:rn//t2.cpp: In function ‘int main()’:rn//t2.cpp:16: error: template argument for ‘template class std::allocator’ uses local type ‘main()::c’rn//t2.cpp:16: error: trying to instantiate ‘template class std::allocator’rn//t2.cpp:16: error: template argument 2 is invalidrn[/code]rn另外,还有一个问题:rn如果将类定义在函数体内,那么类的成员函数是否只能定义在类之内呢?rn就像下面这样:rn[code=C/C++]rn#include rnusing namespace std;rnrnint main()rnrn class crn rn public:rn void f()cout<<"hello wrold!";;rn ;rnrn c cc;rn cc.f();rn rn return 0;rnrnrnrn[/code]
类中类可以在类外定义吗?
如果可以要怎样写?
c函数中可以定义内部函数吗?
函数中可以定义内部函数吗?rn如果可以的话 rn该怎么理解和使用呢?
请问:C中可以定义运算符吗??????
我想请问,C中能不能定义运算符,如果能,怎样定义,比如:rnA IMP B=(!A) || B,怎样实现运算符IMP的定义?请执教指教!
怎样在类中定义另一个类的对象
假如我声明了rnrnclass A rnrnstatic int i;rnstatic void Load();rnrnrn并实现了class A;rnrn想在再声明一个类B,在类B的实现中产生类5个A的对象
类中又定义了一个类,啥意思
[code=C/C++]rnclass OutPolygon // Output polygonrnrn private:rn class OutVertex // Output vertexrn rn private:rn Spectra color; // Colorrn Point3 posn; // 3-D positionrnrn public:rn Point3 &GetPosn() return posn; rn Spectra &GetColor() return color; rnrn void Set( Vertex4 &v )rn rn // Perform perspective divisionrn v.GetCoord().Perspective(&posn);rnrn color = v.GetColor();rn rn rn vertex[MaxOutVert]; // Output vertex arrayrn int num_vert; // Number of verticesrnrn void AddVertex( Vertex4 &v )rn vertex[num_vert++].Set(v); rn void Reset() num_vert = 0; rnrn friend class ClipEdge;rn friend class PolyClip4;rnrn public:rn OutPolygon() num_vert = 0; rnrn int GetNumVert() return num_vert; rn Point3 &GetVertexPosn( int i )rn return vertex[i].GetPosn(); rn Spectra &GetVertexColor( int i )rn return vertex[i].GetColor(); rn;[/code]rnrn是相当于OutVertex是OutPolygon的基类的意思么?
VC2010类中定义另一个类出错
我在VC2010中,建了3个类,分别6个文件a.h ,a.app ,b.h ,b.app ,c.h, c.apprnclass a ,class b ,class c .rn每个类中都定义了一些成员变量和成员函数,都public的rn其中,我在b.h中代码大致如下rn....rn#include "a.h"rn....rnclass b rnrn ...rn a mc_a;//b的头文件中定义了一个a类的成员变量rn ....rnrn然后,我在c.h中代码大致如下rn....rn#include "b.h"rn....rnclass c rnrn ...rn b mc_b;//c的头文件中又定义了一个b类的成员变量rn ....rnrn问题就在c类的头文件中,如果我把“b mc_b;”注释掉,调试就正常,但如果一加上就出错,每次都是3个错误:rn错误 1 error C2146: 语法错误: 缺少“;”(在标识符“dBoard”的前面) e:\资源\程序w1.0\程序w1.0\cgochess.h 12 1 程序w1.0rn错误 2 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int e:\资源\程序w1.0\程序w1.0\cgochess.h 12 1 程序w1.0rn错误 3 error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int e:\资源\程序w1.0\程序w1.0\cgochess.h 12 1 程序w1.0rnrn此外,我还做了一些实验,我用的FMC,我的主程序(窗体)为“C程序w1.0dlg.app”,其头文件为“C程序w1.0dlg.h”,rn我在“C程序w1.0dlg.h”,“b.h”或者“c.h”中声明一个a类的成员变量,都没事,但是我在“C程序w1.0dlg.h”或者“c.h”中声明一个b类的成员变量就变异出错,又或者我在“C程序w1.0dlg.h”中声明一个c类的成员变量也出错,就是说除了a类成员,其他的都出错了,#include我都写好了,b类和c类写的也没问题,因为我在主程序中的某个过程(如OnPaint(),OnInitDialog()),声明任意一个a,b,c类的变量都可以使用。我的思路是我在b类中含有一个a类的成员,而在c类中含有一个b类的成员,再在“C程序w1.0dlg.h”中增加一个c类的成员,这样使用起来方便,而且也是必须的,就像一个省里面含有一些市,市里面又含有一些县,一样。rn类的这种问题应该很简单,我主要想知道是我的原因,还是VS32010出现bug了,因为有时候就莫名的出现问题,而重新开一个解决方案,一样的代码,问题就没了.rn求大侠帮我解决~~~~~~~~~~~我大龄人,不太会玩网,所以没多少积分的,,所以先谢谢了大侠了~~~~~~rn
在类里面定义一个类,可以吗?
class Classrnrn public:rn class Trn rn rn rn;rn有没有在类里面定义类的做法??
可以动态生成一个类吗?
比如说我想在程序中生成一个只包含数据的类:rnclass testrnint arnstring brnrn然后再初始化a=0,b="hello"rnrnrn
dll中定义一个类
在dll中定义一个类时,为什么要把_declspec(dllexport)标识符写在关键字class的后面,而如果写在前面的话,在使用该dll调用该类中的成员函数时就会产生链接错误。
我定义了一个类,在类中要怎么定义一个成员函数
我定义了一个类,是什么意思rn类中要怎么定义一个成员函数。是什么意思rn多多指教,送分rn
C++中怎样定义一个类,这个类只能定义一个对象?
谁知道
可以定义string类的数组吗?
可以定义string类的数组吗?在类中定义string *man_char=new string[4];这样的语句为什么会报错
c#里面类可以定义数组吗?
我定义数组类,不成总是说未被实例到对象rnrn如果可以高人给点语法吧。
VB可以定义潜逃类吗
需求分析:rn定义一个技能类 ,rn技能又分几种类别 rn
C#可以在类外定义函数吗
c++不是完全面向对象的,所以可以在类外定义函数和变量rnc#是完全面向对象的,所以不可以在类外定义函数和变量,也没有了函数和变量的说法,rn只有类这种说法了,也只能在类中定义成员函数和成员变量,这样的理解对吗rn问题有点基础,麻烦大神们帮忙看看
如何在一个类中定义另外一个类?
在一个类中定义了一个不同的类,在class view里能看到,在file view里看不到,在classwizard里也有定义这个类的的相关内容,这怎么实现,还是不能实现?
在一个类中定义另外一个类的指针问题
在CSetPage类中定义了一个指向CRequst 类的指针:rnclass CSetPage : public CPropertyPagernrn DECLARE_DYNCREATE(CSetPage)rnrn// Constructionrnpublic:rn CRequst * m_req;rnrn但是我在send函数中按如下方法使用这个m_req时,这句if (m_req==NULL)代码却出现访问错误,这个m_reg变量好像就没有给分配空间一样。这是什么原因?rnrnvoid CSetPage::Send()rnrnrn if (m_req==NULL)rn rn m_req= new CRequst();rn rn m_req->buf="hello";rn m_req->data="socket";rn m_req->number=2;
一个类在另一个类中定义的问题
class arn var $a;rn var $b;rn rn function seta($v)rn $this->a = $v;rn rnrnclass brn var $c;rn var $d;rnrn function get()rn $this->c = new a();rn rnrn在这种情况下,我想在class a 中改变class b 的$c的值,请问怎么改变啊?还是做不到?
怎么在一个类中定义另外一个类的变量?
代码:rn[code=C/C++]rnCTalkDialog.hrn------------------------rnCTalkDialog(FileORTextSOCK a,SockPort b,SockAddr c);在CTalkDialog.hrnrnrnFileORTextSOCK,SockPortm, SockAddr是CSOCKETDLG.h中的定义的3个结构体!rnrn[/code]rnrnrn怎么我在CTalkDialog.h中包含了CSOCKETDLG.h,怎么还是报错呢?
一个类的定义中如何引入另一个类?
拜托!import可以吧,如何写?急。
我定义了一个类,如何定义一个类指针?
大家好,我用C的,刚下了一个C++类,类会使用,但不会用类指针,和结构指针一样吗?rnrnclass Robotrn...rn *PROBOT; // 这句为什么不行呢?rnrnRobot rbtOwner;rnPROBOT prbtOwner = &rbtOwner;rnrn// 如何能实现上面的操作呢?rn
定义一个类
定义一个类,模拟电脑这个事物。类的两个组成部分: 属性: String cpuModel;//CPU型号 String graphocsModel;//显卡型号 行为: public void game(){}//写代码 public void writeCode(){}//玩儿游戏rin package cn.dali.code.two; public class Computer { ...
一个类中类的问题
类中类只能被同文件的公共类访问和引用,但是把它实例化后不能放到main()中,为什么?而main方法可以放到任何一个类中啊!rn请哪位高手给予指点,十分感谢!rnrnrneg:/*rn * test.javarn *rn * Created on 2003年3月6日, 下午10:51rn */rnrn/**rn *rn * @author Administratorrn */rnimport java.io.*;rnpublic class test rn rn /** Creates a new instance of test */rn public test() rn rn rn /**rn * @param args the command line argumentsrn */rn public static void main(String[] args) rn Input t=new Input();rn System.out.println(t.getTheChar());rn rn //类中类rn class Inputrn public char getTheChar()rn char c=0;rn System.out.print("Enter a character:");rn tryrn c=(char)System.in.read();rn catch(IOException e);rn return c;rn rn rnrn编译时就出现如下错误:rntest.java [22:1] non-static variable this cannot be referenced from a static contextrn Input t=new Input();rn ^rn1 errorrnErrors compiling test.rnrn
类中可以嵌套类吗
请遍手指导一下,类中可以嵌套类吗。
【新手上路】类中可以定义接口吗?
小弟知道类可以实现接口,但是不知道类中是否可以定义接口,别的类中如何使用?rn下面代码是否有问题:rnclass A rn public interface callback rn void setState();rn rnrn private callback mCallback = null;rn void setCallback(callback cb) rn mCallback = cb;rn rnrn public void performClick() rn if (mCallback != null) rn mCallback.setState();rn rn rn rn // other code rnrnrnclass B implements A.callback rn public void setState() rn // do somethingrn rnrnrn请问下上面的类B是否可以实现A中定义的接口?rn如果可以实现,为什么?rn如果A中定义了非静态内部类,B中要访问的话,只有通过A的实例才可以访问rn小弟不知道为什么可以直接访问A中的接口呢?
java中可以定义以类为类型的数组吗?
class studentrn rn int number;rn String classname;rn String name;rn String sex;rn int age;rn student(int number,String classname)rn rn this.number = number;rn this.classname = classname; rn rn student(String name,int age,String sex)rn rn this.name = name;rn this.age = age;rn this.sex = sex; rn rn rn rn rn class operationrn rn void setname(student a,String name)rn rn a.name = name;rn rn rn rn public class textrn public static void main(String args[])rn rn student a = new student("mysword",22,"boy");rn student b = new student("plainsong",28,"boy");rn operation set = new operation();rn set.setname(a,"dengsfa");rn set.setname(b,"zzwu");rn System.out.println(a.name + ' '+ a.age + ' ' + a.sex);rn System.out.println(b.name); rn rn /* rn operation set = new operation();rn student a[10];rn for(int i=0; i<10; i++)rn a[i] = new student();rn set.setname(a[0],"dengsfa"); rn System.out.println(a[0].name); */ rn rn rn rnrn 初学java:rn 上面定义一个学生类:rn 一个学生有5个属性,显然如果在一个班级的话,有那么多的学生。rn 可以以学生类的为数组的类型吗? 类似我上面注释掉的语句。?rn 具体如何做呢? 我上面注释掉的有错!(但在c++中就可以)rn rn
virtual 定义的类,在子类中可以隐藏吗?
public abstract class Arnrnpublic virtual object Record(string sqlStr);rnpublic virtual object Record(string a,string b);rnrnrnpublic class child:Arnrn public override object Record(string SqlStr)rn rn .........rn rnrn如上边的类,如果我new child()用"."调用时能不能不显示Record(string a,string b)这个类rn
类中的静态变量可以先使用后定义吗?
在一个教程里看到下面的程序:rnrn#includernclass samplernrn int n;rnpublic:rn sample(int i)rn rn n=i;rn rn void add()rn rn s+=n;rn rn static int s;rn;rnint sample::s=0;rnvoid main()rnrn sample a(2),b(5),c(8);rn a.add();rn cout<<"s="<
在C++的类中可以定义cuda Texture吗?
代码如下:rn#include rn#include rnrnclass mippCuda3DDatarnrn public:rn mippCuda3DData(void);rn virtual ~mippCuda3DData(void);rn public:rn //定义3D纹理变量rn texture VolumeTexture;rn cudaArray* m_cuda3DArray;rn;rnrn但是在编译的时候texture VolumeTexture;不通过;rn我想让texture作为类的成员,该如何实现呢?rnrn谢谢!rn
静态内类中可以定义静态属性(变量)吗?
如题!rn请大家帮忙!
Java中如果一个类引用另外一个类中的方法,我在其中一个类中定义的静态变量,在另外一个类中有效吗?
比如图中这么写报错 ,然后我删掉345行的static 程序就能跑起来了,静态变量的作用域是整个类,为什么我不能在两个类中定义两组静态变量?,![图片说明](https://img-ask.csdn.net/upload/201611/13/1479050196_279851.jpg)
请问在类中可以 定义静态的vector容器吗?
在类example.h中声明了static std::vector vec(5); rn在example.cpp中定义了 std::vector Example::vec(5,0),结果编译的时候出错,请问该怎样定义?
在c++的类中可以定义main()函数吗?
在c++的类中可以定义main()函数吗?rn如果可以应该如何去调用?
在 vb 类模块中可以定义数组吗?
vb 类模块中如何写一个属性,此属性为数组类型
可以在class类中的成员变量,定义一个STL容器吗
n在Company类中包含了一个静态的multimap容器n最后编译显示无法链接的外部符号n错误 1 error LNK2001: 无法解析的外部符号 "protected: static class std::multimap,class std::allocator > > Company::mulmap" (?mulmap@Company@@1V?$multimap@HVPerson@@U?$less@H@std@@V?$allocator@U?$pair@$$CBHVPerson@@@std@@@3@@std@@A) c:\Users\传旭\documents\visual studio 2013\Projects\STL容器作业\STL容器作业\Company.obj STL容器作业nn```n #define _CRT_SECURE_NO_WARNINGSn#pragma oncen#include n#includen#include n#include "Person.h"nusing namespace std;nnclass Companynnpublic:n virtual void ShowPerson();//显示公司所有员工nprotected:n static multimap mulmap;n;nnclass Sale:public Company //销售部门nnpublic:n virtual void ShowPerson();//显示销售部门所有员工n;nclass Development :public Company //研发部门nnpublic:n virtual void ShowPerson();//显示研发部门所有员工n;nclass Personnel :public Company //人事部门nnpublic:n void Join(const Person & person);//通过人事部门加入公司n virtual void ShowPerson();//显示人事部门所有员工n;nn```nn
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数