C++怎么将一个类族作为内嵌对象,我知道我做的不对描述不对,但就是这个意思,

我自定义一个类,在哪里声明类对象,可以在窗体各个事件里使用该对象?谢谢-.NET技术/C#-c/c++-电脑编程网我自定义一个类,在哪里声明类对象,可以在窗体各个事件里使用该对象?谢谢-.NET技术/C#作者:tongtianxiao 和相关&&我自定义一个类,在哪里声明类对象,可以在窗体各个事件里使用该对象?谢谢------回答---------------其他回答(5分)---------先看看什么叫面向对象,再来研究这个问题。------其他回答(10分)---------在窗体类下面定义一个你自定义类的字段,在窗体类的构造函数里面实例化,不就可以了吗~------其他回答(10分)---------你的类名 aa = new 你的类名();先看看什么叫面向对象, +++1多学习 多敲代码 从代码中体会用Visual Studio 因为它会提示什么可以 什么不可以------其他回答(10分)---------可以在窗体类下面定义你的类 MyClass myC在用到的时候在初始化 myClass=new MyClass();------其他回答(5分)---------@lz:可以在窗体的代码部分添加一个自定义类型的字段,在Load方法内对其进行实例化.相关资料:|||||||我自定义一个类,在哪里声明类对象,可以在窗体各个事件里使用该对象?谢谢-.NET技术/C#来源网络,如有侵权请告知,即处理!编程Tags:                &                    C++&嵌套类使用(一)
一、嵌套类
在一个类的内部定义另一个类,我们称之为嵌套类(nested
class),或者嵌套类型。之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现,且同时可以对用户隐藏该底层实现。
虽然嵌套类在外围类内部定义,但它是一个独立的类,基本上与外围类不相关。它的成员不属于外围类,同样,外围类的成员也不属于该嵌套类。嵌套类的出现只是告诉外围类有一个这样的类型成员供外围类使用。并且,外围类对嵌套类成员的访问没有任何特权,嵌套类对外围类成员的访问也同样如此,它们都遵循普通类所具有的标号访问控制。
&&&若不在嵌套类内部定义其成员,则其定义只能写到与外围类相同的作用域中,且要用外围类进行限定,不能把定义写在外围类中。例如,嵌套类的静态成员就是这样的一个例子。
前面说过,之所以使用嵌套类的另一个原因是达到底层实现隐藏的目的。为了实现这种目的,我们需要在另一个头文件中定义该嵌套类,而只在外围类中前向声明这个嵌套类即可。当然,在外围类外面定义这个嵌套类时,应该使用外围类进行限定。使用时,只需要在外围类的实现文件中包含这个头文件即可。
&&&另外,嵌套类可以直接引用外围类的静态成员、类型名和枚举成员(假定这些成员是公有的)。类型名是一个typedef名字、枚举类型名、或是一个类名。
实例如下:
NESTCLASS_H_&
#define NESTCLASS_H_&
void operate();
#include "nestclass.h"&
#include &
class A::B
void operate()
operate!"&&
void A::operate()
&&& m_b = new
operate!"&&
m_b-&operate();
"nestclass.h"&
void main()
a.operate();
在嵌套类的定义被看到之前我们只能声明嵌套类的指针和引用,如上面在A中定义为B m_b而不是B*
m_b将会引发一个编译错误。
关于C++嵌套类的详细用法请参考《C++ Primer 第三版》P551。
二、局部类
类也可以定义在函数体内 这样的类被称为局部类(local class),
局部类只在定义它的局部域内可见,与嵌套类不同的是,在定义该类的局部域外没有语法能够引用局部类的成员,
因此,局部类的成员函数必须被定义在类定义中,在实际中,这就把局部类的成员函数的复杂性限制在几行代码中,否则,对读者来说,代码将变得很难理解。&
因为没有语法能够在名字空间域内定义局部类的成员 ,所以也不允许局部类声明静态数据成员。
在局部类中嵌套的类可以在其类定义之外被定义,但是,该定义必须出现在包含外围局部类定义的局部域内。在局部域定义中的嵌套类的名字必须由其外围类名限定修饰,在外围类中,该嵌套类的声明不能被省略。例如:
void foo( int val
class Bar {&
& int barV&
嵌套类的声明是必需的&
// 嵌套类定义&
class Bar::nested {&
外围函数没有特权访问局部类的私有成员,当然,这可以通过使外围函数成为局部类的友元来实现。
同嵌套类一样,局部类可以访问的外围域中的名字也是有限的,局部类只能访问在外围局部域中定义的类型名、静态变量以及枚举值,例如:
void foo( int val )&
enum Loc { a = 1024, b };&
class Bar {&
& Loc locV //&
& int barV&
& void fooBar( Loc l = a ) { // ok:
&& barVal = // 错误:
&& barVal = :: // OK:
&& barVal = // ok:
静态局部对象&
&& locVal = // ok:
在局部类体内,不包括成员函数定义中的
的名字解析过程是,在外围域中查找出现在局部类定义之前的声明,在局部类的成员函数体内的名字的解析过程是:在查找外围域之前
,首先直找该类的完整域 。
还是一样,如果先找到的声明使该名字的用法无效,则不考虑其他声明,即使在fooBar() 中使用 val
是错的,编译器也不会找到全局变量val ,除非用全局域解析操作符限定修饰 val,如 ::val 。
原文:/charley_yang/archive//2005897.html
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。下载作业帮安装包
扫二维码下载作业帮
1.75亿学生的选择
c++ 能不能定义一个向量,然后向量的每个元素存入类对象的地址?我知道数组是可以存入指针的.但改成向量后就不行了.下面是我自己写的准备向向量的每个元素存入类对象的地址,但不正确.如果可以,请问如何改正?#include #include #include class Test{public:Test(){}Test(string input){a=}string getcontent()const{}private:};int main(){Test t1("hello"),t2("world");vector *array(2);array[0]=&t1;array[1]=&t2;cout
看来你对C++的模版那块基础还不太好.vector中的T是模版类型,你要让vector保存什么你就把T换成什么.你要保存Test的指针显然应该把T改为Test*.你的代码这一句:vector *array(2); 这句话的意思是:定义一个vector的指针,vector内部可以保存Test对象,然后让这个指针的值是2.你应该这么改定义:vector array(2); 这句话的意思才是:定义一个vector对象,vector内部可以保存Test的指针,然后让这个vector初始化成大小为2的向量.另外你平常定义普通指针的时候也应该这么写:int* a而不是int *a(注意空格的位置),养成这样的习惯就能在脑中明确:int*是一个类型,代表int指针,从而不会再犯上面vector *这种的错误.
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 我知道对有什么不对 的文章

 

随机推荐