我有两个类A和B.控件位于A类的一个成员函数中。成员函数计算结果,我现在想将此值发送给B类的一个成员函数,我试过了以下方式,但它工作
int memberFunctionOfA() { ... //results are stored in some temporary value, say temp B::memberFunctionOfB(temp); // the way i tried }
编辑报告错误。我也尝试了
B obj; obj.memberFunctionOfB(temp);
两者都给了我无法调用memberFunctionOfB的错误。任何人都可以告诉我我错过了什么
修改
B类不是从A继承的。它们都是独立的。成员函数都是公共的和非静态的
答案 0 :(得分:3)
你的第二次尝试:
int memberFunctionOfA()
{
... //results are stored in some temporary value, say temp
B obj;
obj.memberFunctionOfB(temp);
}
......,看起来非常有效。我们需要B的定义来进一步帮助。 B的定义应该是最小的,假设B中的成员函数是非静态的:
class B
{
public:
void memberFunctionOfB(const TypeOfTemp &temp);
};
// Later in class A's definition
class A
{
public:
int memberFunctionOfA()
{
... //results are stored in some temporary value, say temp
B b;
b.memberFunctionOfB(temp);
}
};
如果B中的成员函数是静态的,那么这应该有效:
class B
{
public:
static void memberFunctionOfB(const TypeOfTemp &temp);
};
...
class A
{
public:
int memberFunctionOfA()
{
... //results are stored in some temporary value, say temp
B::memberFunctionOfB(temp);
}
};
答案 1 :(得分:1)
看到你的评论后:
编译器抛出“No matching function call B :: B()”
这意味着,类B
没有默认构造函数。在你的实现中,B的构造函数必须是参数。
因此,要么为类添加默认构造函数,要么在创建实例时将参数传递给构造函数。