有条件地启动对象 [英] Conditionally initiating objects

查看:88
本文介绍了有条件地启动对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

大家好,


我是新手,很抱歉这个问题在这里不合适。

不过我试试。

---

假设我有一个CTraffic类,其中几个类的对象是
CVehicle移动。但是,类CVehicle是一个抽象基础

类,因为它的每个对象都是子类CCar或子类的成员

CBicycle。


因此,如果我在CTraffic中定义一个CVehicle,我可以制作一个if / else块

,它决定我们是在主要道路上还是在自行车道上。在里面

这个块我可以声明并初始化正确的对象为

CCar * pVehicle = new CCar();



CBicycle * pVehicle = new CBicycle();

然后在我的新指针pVehicle上执行一些CVehicle函数(如MoveFroward(int

dist))。

---

然而,有些东西会接受这个概念,因为

调试会给出错误

错误C2065:''pBac'':未声明的标识符

在我第一次使用

if / else块之外的新pVehicle对象的行上。


如需任何帮助或努力:请提前预订!!!


j

Hi all,

I''m a newbe, so sorry if this question would be inappropriate here.
Nevertheless I try.
---
Suppose I have a class CTraffic in which several objects of class
CVehicle move around. However, class CVehicle is an abstract base
class, since every object of it is member of subclass CCar or subclass
CBicycle.

So if I define a CVehicle inside CTraffic, I can make an if/else block
that decides if we''re on the main road or on the bicycle path. Inside
this block I can then declare and initialize the right object as
CCar* pVehicle = new CCar();
or
CBicycle* pVehicle = new CBicycle();
and afterwards perform some CVehicle functions (like MoveFroward(int
dist)) on my new pointer pVehicle.
---
However, something seams to be wrond with this concept, because
debugging gives an error
error C2065: ''pBac'' : undeclared identifier
on the line where I first use the new pVehicle object outside the
if/else block.

For any help or effort: thx in advance!!!

j

推荐答案



jeroendeuri ... @ yahoo.com写道:

jeroendeuri...@yahoo.com wrote:
大家好,

我是新手,很抱歉,如果这个问题在这里不合适。
不过我试试。
---
假设我有一个CTraffic类类的几个对象
CVehicle四处移动。但是,类CVehicle是一个抽象基类,因为它的每个对象都是子类CCar或子类的成员CBicycle。

所以如果我在CTraffic中定义一个CVehicle,我可以制作一个if / else块
,决定我们是在主要道路上还是在自行车道上。在这个区块里面我可以声明并初始化正确的对象,如CCar * pVehicle = new CCar();

CBicycle * pVehicle = new CBicycle();
可能这就是你要做的事情:


CVehicle * pVehicle;


if(MainRoad())

pVehicle = new CCar;

else if(BicyclePath())

pVehicle = new CBicycle;


pVehicle-> MoveFroward();

然后在我的新指针pVehicle上执行一些CVehicle函数(如MoveFroward(int
dist))。
--- 调试会给出错误
错误C2065:''pBac'':未声明的标识符


其中pBac是否已经decalred?

我首先在
if / else块之外使用新的pVehicle对象。

任何帮助或努力:thx in提前!!!

j
Hi all,

I''m a newbe, so sorry if this question would be inappropriate here.
Nevertheless I try.
---
Suppose I have a class CTraffic in which several objects of class
CVehicle move around. However, class CVehicle is an abstract base
class, since every object of it is member of subclass CCar or subclass
CBicycle.

So if I define a CVehicle inside CTraffic, I can make an if/else block
that decides if we''re on the main road or on the bicycle path. Inside
this block I can then declare and initialize the right object as
CCar* pVehicle = new CCar();
or
CBicycle* pVehicle = new CBicycle(); May be this is what you have to do:

CVehicle * pVehicle;

if( MainRoad() )
pVehicle = new CCar;
else if( BicyclePath() )
pVehicle = new CBicycle;

pVehicle->MoveFroward();
and afterwards perform some CVehicle functions (like MoveFroward(int
dist)) on my new pointer pVehicle.
---
However, something seams to be wrond with this concept, because
debugging gives an error
error C2065: ''pBac'' : undeclared identifier
where is pBac decalred?
on the line where I first use the new pVehicle object outside the
if/else block.

For any help or effort: thx in advance!!!

j




Ravi



Ravi


< a href =mailto:je ************ @ yahoo.com> je ************ @ yahoo.com 写道:
大家好,

我是新手,很抱歉如果这个问题在这里不合适。
不过我试试。
---
假设我有一个CTraffic类,其中几个类的对象CVehicle四处移动。但是,类CVehicle是一个抽象基类,因为它的每个对象都是子类CCar或子类的成员CBicycle。

所以如果我在CTraffic中定义一个CVehicle,我可以制作一个if / else块
,决定我们是在主要道路上还是在自行车道上。在这个区块里面我可以声明并初始化正确的对象,因为CCar * pVehicle = new CCar();

CBicycle * pVehicle = new CBicycle(); dist))。
---
但是,有些东西会接受这个概念,因为<调试给出错误
错误C2065:''pBac'':未声明的标识符
在我第一次使用
if / else块之外的新pVehicle对象的行上。 />
任何帮助或努力:提前thx !!!

j
Hi all,

I''m a newbe, so sorry if this question would be inappropriate here.
Nevertheless I try.
---
Suppose I have a class CTraffic in which several objects of class
CVehicle move around. However, class CVehicle is an abstract base
class, since every object of it is member of subclass CCar or subclass
CBicycle.

So if I define a CVehicle inside CTraffic, I can make an if/else block
that decides if we''re on the main road or on the bicycle path. Inside
this block I can then declare and initialize the right object as
CCar* pVehicle = new CCar();
or
CBicycle* pVehicle = new CBicycle();
and afterwards perform some CVehicle functions (like MoveFroward(int
dist)) on my new pointer pVehicle.
---
However, something seams to be wrond with this concept, because
debugging gives an error
error C2065: ''pBac'' : undeclared identifier
on the line where I first use the new pVehicle object outside the
if/else block.

For any help or effort: thx in advance!!!

j




我认为这很简单够了,你有这个


if(something)

CCar * pVehicle = new CCar();

else

CBicycle * pVehicle = new CBicycle();


这些车辆只存在于if else语句中。你想要的是

这个


CVehicle * pVehicle;

if(something)

pVehicle = new CCar();

else

pVehicle = new CBicycle();


现在因为pVehicle在if之外声明else语句它存在
$ if $ if语句之外的b $ b。

注意pVehicle的类型已经改为你的抽象基类

应该如何。


john



I think it''s simple enough, you have this

if (something)
CCar* pVehicle = new CCar();
else
CBicycle* pVehicle = new CBicycle();

Those vehicles only exist inside the if else statement. What you want is
this

CVehicle* pVehicle;
if (something)
pVehicle = new CCar();
else
pVehicle = new CBicycle();

now because pVehicle is declared outside the if else statement it exists
outside the if else statement.

Note the type of pVehicle has changed to your abstract base class which
is how it should be.

john


je ************ @ yahoo.com 写道:
大家好,

我是newbe,很抱歉,如果这个问题在这里不合适。
不过我试试。
---
假设我有一个CTraffic类,其中有几个类的对象
CVehicle四处走动。但是,类CVehicle是一个抽象基类,因为它的每个对象都是子类CCar或子类的成员CBicycle。

所以如果我在CTraffic中定义一个CVehicle,我可以制作一个if / else块
,决定我们是在主要道路上还是在自行车道上。在这个区块里面我可以声明并初始化正确的对象,因为CCar * pVehicle = new CCar();

CBicycle * pVehicle = new CBicycle(); dist))。
---
但是,有些东西会接受这个概念,因为<调试给出错误
错误C2065:''pBac'':未声明的标识符
在我第一次使用
if / else块之外的新pVehicle对象的行上。 />
任何帮助或努力:提前thx !!!
Hi all,

I''m a newbe, so sorry if this question would be inappropriate here.
Nevertheless I try.
---
Suppose I have a class CTraffic in which several objects of class
CVehicle move around. However, class CVehicle is an abstract base
class, since every object of it is member of subclass CCar or subclass
CBicycle.

So if I define a CVehicle inside CTraffic, I can make an if/else block
that decides if we''re on the main road or on the bicycle path. Inside
this block I can then declare and initialize the right object as
CCar* pVehicle = new CCar();
or
CBicycle* pVehicle = new CBicycle();
and afterwards perform some CVehicle functions (like MoveFroward(int
dist)) on my new pointer pVehicle.
---
However, something seams to be wrond with this concept, because
debugging gives an error
error C2065: ''pBac'' : undeclared identifier
on the line where I first use the new pVehicle object outside the
if/else block.

For any help or effort: thx in advance!!!




你的概念本身没有错,但你有一个明确的问题

编译代码。编译器不知道pBac是什么。除了你的编译错误之外你还没有提到它。


如果你想要真正的帮助,你需要发帖你的完整代码。不能通过模糊的描述来诊断问题。


- 约翰拉特利夫



Nothing wrong with your concept per se, but you have a definite problem
compiling your code. The compiler has no idea what a pBac is. Neither do
I since you didn''t mention it aside from your compile error.

If you want real help, you''ll need to post your complete code. Can''t
diagnose problems from a vague description.

--John Ratliff


这篇关于有条件地启动对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆