C++类中 构造函数成员变量赋值 如何转换为 PAS 的类声明 ( 积分: 200 )

  • 主题发起人 主题发起人 huhu13
  • 开始时间 开始时间
H

huhu13

Unregistered / Unconfirmed
GUEST, unregistred user!
如下类

class Error : public ErrorOld
{
public:
Error(const char* theWhere,const char* theWhy):why(theWhy),where(theWhere) //这该怎么改写呢?
{
}
...
...
private:
const string why

const string where

}
 
这是C++在利用构造函数直接向私有常量域赋值。等价于下面的Delphi代码:
type
Error=class(ErrorOld)
private
why:String;
where:String;
public
constructor Create(const theWhere, theWhy: String);
end;

constructor Error.Create(const theWhere, theWhy: String);
begin
why:=theWhy;
where:=theWhere;
end;
 
很感谢creation-zy,解决问题.

想再问个延伸的问题,还是原来那C++函数,最后使用的时候看不懂. C++ 不容易理解.
//////////////////////////////////////////////////////////////
class Error : public ErrorOld
{
public:
Error(ErrorOld* di):DoOld(di)
{
}
...
...
private:
ErrorOld* DoOld;
}

...
...
LPVOID * pOut

...
*pOut = new Error(reinterpret_cast<ErrorOld*>(*pOut))
//这句如何改写?指针的指针,比较晕

//////////////////////////////////////////////////////////////
//以下翻为 pas
type
PErrorOld=^ErrorOld;
Error=class(ErrorOld)
private
DoOld:PErrorOld;
public
constructor Create(di:PErrorOld);
end;

constructor Error.Create(di:PErrorOld);
begin
DoOld:=di;
end



var
pOut :Pointer;
ppOut:^Pointer;


ppOut:=Pointer(Error.Create( PErrorOld(ppOut) ) )
// 这里 ??

//////////////////////////////////////////////////////////////
 
reinterpret_cast Operator
The reinterpret_cast operator allows any pointer to be converted into any other pointer type. It also allows any integral type to be converted into any pointer type and vice versa. Misuse of the reinterpret_cast operator can easily be unsafe. Unless the desired conversion is inherently low-level, you should use one of the other cast operators.

Syntax

reinterpret_cast < type-id > ( expression )


Delphi的对象实际上就是C++中的对象指针,所以“ErrorOld*”就是ErrorOld。
type
Error=class(ErrorOld)
private
DoOld:ErrorOld;
public
constructor Create(di:ErrorOld);
end;

ppOut:=Pointer(Error.Create( ErrorOld(ppOut) );
 
感谢creation-zy,关键的几处点拨受益非浅.
 

Similar threads

后退
顶部