BCB4中怎样用Image作为引用参数 (10分)

  • 主题发起人 主题发起人 laolor
  • 开始时间 开始时间
L

laolor

Unregistered / Unconfirmed
GUEST, unregistred user!
假如我要吧Image作为引用参数来传递,怎么办?
Graph::Graph(int Left,int Top,int Width,int Height,TImage aImage)
{
TImage Image2;

Image2=Image1;

...
} //错的
 
Graph::Graph(int Left,int Top,int Width,int Height,TImage &Image)
{
...
}
 
另外你贴的程序是不是写错了,这与引用没什么关系。Image1是什么?
如果它是你窗体上拖的一个可视控件那Image2应是TImage * 型的,而
不是TImage型的。
 
Graph::Graph(int Left,int Top,int Width,int Height,TImage* aImage)
{
TImage* Image2;

Image2=Image1;

...
}
 
贴错啦
Graph::Graph(int Left,int Top,int Width,int Height,TImage &Image1)
{
TImage Image2;

Image2=Image1;

...
} //错的
 
原来是这样TImage没有重载 “="号它要求必须用指针定义实例然后再用new分配
内存。对于你这种情况完全没必要用引用,因为引用的意思是使Image1的值可以
被改变。
Graph::Graph(int Left,int Top,int Width,int Height,TImage * Image1)
{
TImage * Image2;

Image2=Image1;

...
}
Image2就没必要再用new分配内存了,因为它用的实际上就是Image1的地址。
如果你想用两个实例可以在那两句中加一句Image2=new TImage;
 
其实这里还有个父子类的构造函数定义问题
Graph::Graph(int Left,int Top,int Width,int Height,TImage * Image1){
TImage * Image2;
Image2=Image1;
...
}
之后,
class LINE:public Graph
{
public:
LINE(int Left,int Top,int Width,int Height,TImage *aImage)
{Graph::Graph(int Left,int Top,int Width,int Height,TImage *aImage);}
有错啦,错咯,怎么办哪?
 
class LINE:public Graph
{
public:
LINE(int Left,int Top,int Width,int Height,TImage *aImage)
{Graph::Graph(Left,Top,Width,Height,aImage);}
这样试试。
另外,你把Timage *image2定义在Graph::Graph(......)中干什么?
那样,它就是一个局部变量,出了这个构造函数就没用了。
 
就是写成Graph::Graph(Left,Top,Width,Height,aImage);也没什么用
你的父类没有初始化。应该这样:
LINE::LINE(int Left,int Top,int Width,int Height,TImage *aImage):
Graph(Left,Top,Width,Height,aImage)
{
//
}
不知你这个类是做什么用的。
 
呵呵,Fencer的应该是对的。好久没用C++Builder了,都有点生疏了。
 
这里只是说明问题,Imgae1是Graph的一个成员,不好意思,表达模糊
谢谢大虾
 
接受答案了.
 
后退
顶部