我有一节课,假设a.cpp
。在这个类的私有属性中,我有一个指向b.cpp
和c.cpp
的指针,其中b.cpp
是虚拟接口类的实现,让我们调用d.cpp
。此外,在c.cpp
的私有属性中,我有一个指向接口类d.cpp
的指针。
我想在a.cpp
类中访问类b.cpp
中的一个方法。我怎么能这样做?
这个例子可以 好的,让我在课程中给出一些方法
class A{
private:
B *_classB;
C *_classC;
public:
int add(int, int);
}
现在,接口类是D. 所以,在D级,我们有
class D{
public:
virtual int mul(int, int) = 0;
}
现在,B类是接口类D的实现 所以,B看起来像:
class B{
private:
int first_num;
int second_num;
public:
virtual int mul(int a, int b);
}
和C类也有指向接口类的指针,因此C看起来像
class C{
private:
D *_classD;
}
现在,我想在类B中调用方法int add(int,int)。
答案 0 :(得分:1)
因为A包含B并且没有其他关系,所以你需要在B类中保留一个指向所有者A的指针
答案 1 :(得分:1)
您需要一个类A
的实例,或者您需要使add
成为A
的静态成员函数。
换句话说,static
解决方案将是这样的:
class A
{
...
static int add(int, int);
};
然后看电话:
...
A::add(x, y);
...
或者:
class B{
private:
int first_num;
int second_num;
public:
virtual int mul(int a, int b);
int add(const A& a, int x, int y)
{
return a.add(x, y);
}
}
从A中的函数看,它看起来像这样:
void A::func(int x, int y)
{
b->add(*this, x, y);
}
还有其他一些解决方案。但是如果没有关于你的实际用例是什么的更多信息,这可能会和它一样好。
答案 2 :(得分:0)
您可以将A类型的对象设为B的数据成员,也可以将A的指针设为B的数据成员。因为在您创建的类中,A和B之间没有关系。 除非你想做继承,我认为这不是问题。