的构造我想打电话从A类中的方法在其他类呼叫从一个类的方法在其他类
我GOOGLE的构造,但没有找到任何答案 例如,我有:
class A{
void doWork();
}
class B{
B(){
//here i want to have doWork method
}
}
的构造我想打电话从A类中的方法在其他类呼叫从一个类的方法在其他类
我GOOGLE的构造,但没有找到任何答案 例如,我有:
class A{
void doWork();
}
class B{
B(){
//here i want to have doWork method
}
}
你告诉我们没有足够的选择合适的解决方案。一切都取决于你想要达到的目标。一些解决方案:
a)将方法标记为静态。
class A
{
public:
static void DoSth()
{
// Cannot access non-static A members here!
}
};
class B
{
public:
B()
{
A::DoSth();
}
};
b)你可以实例到位
class A
{
public:
void DoSth()
{
// Do something
}
};
class B
{
public:
B()
{
A a;
a.DoSth();
}
};
c)你可以把A的情况下加入B:
// A remains as in b)
class B
{
private:
A a;
// or: A * a;
public:
B()
{
a.DoSth();
// or: a = new A; a->DoSth();
// Remember to free a somewhere
// (probably in destructor)
}
}
d)你可以从一个派生B:
class A
{
protected:
void DoSth()
{
}
};
class B : public A
{
public:
B()
{
DoSth();
}
};
e)你可以忘记A类,并使DoSt h功能:
void DoSth()
{
// ...
}
class B
{
public:
B()
{
DoSth();
}
}
由于您提供的数据不够,您必须自行选择解决方案。
或者
class A
{
public:
static void doWork();
};
class B
{
B(void)
{
A::doWork();
}
};
?
PS:这里B :: B()将私人
为了这工作,你会需要它的子类。
所以它会是这样的:
class A {
doWork();
}
class B : A {
B(){
doWork();
}
}
你也可以做到像那么回事了HAS-A,而不是IS-A关系:
class A {
doWork();
}
class B {
A myA;
B(){
myA.doWork();
}
}
不知道更多的你在做什么我会与顶级(IS-A)解决方案,这是我认为你正在尝试做的。
“B”有一个指针或引用“A”的实例吗? doWork()是静态的吗? “B”是“A”的一个子类吗?否则,您无法从另一个类,构造函数或其他方法中调用方法 –
您可以从“构造函数”的构造函数中调用一个方法(非成员,静态成员函数或者如果您有'A'成员函数的实例) B',但是没有“从方法**调用到**构造函数中”,这是没有意义的... – Nim
关注评论对downvotes?问题不是最好的质量,但很明显,OP的意图是什么。对于专业人士来说,初学者的问题和SO一样受欢迎,不是吗? – Spook