在另一个类方法中运行类方法
Running class method in another class method
我想在另一个类的另一个函数方法中运行一个类中的函数方法。我编写了以下代码作为示例,它编译并返回期望的值。我的问题是,这是否是在另一个类方法中预先形成类方法计算的正确方法。。。
问候
#include <iostream>
class CBoo {
public:
CBoo();
void Test();
void Plot();
private:
int b;
};
CBoo::CBoo() {
b = 3;
}
void CBoo::Test() {
b++;
}
void CBoo::Plot() {
std::cout << "b: " << b << std::endl;
}
class CFoo {
public:
CFoo();
void Test( CBoo &Boo );
void Plot();
private:
int a;
};
CFoo::CFoo() {
a = 3;
}
void CFoo::Test( CBoo &Boo ) {
for ( int i = 0 ; i < 10 ; i++ ) {
a++;
Boo.Test();
}
}
void CFoo::Plot() {
std::cout << "a: " << a << std::endl;
}
int main( ) {
CFoo Foo;
CBoo Boo;
Foo.Test( Boo );
Foo.Plot();
Boo.Plot();
return 0;
}
有两种简单的方法可以做到这一点。其中之一,也就是您选择的,是将一个外部类对象传递给另一个对象方法。另一种是将一个对象封装在另一个对象内部,并直接从封装类的方法中调用它。
可能还有更深奥的方法可以做到这一点,但你选择的方法是完全合理的。您选择的选项取决于程序的体系结构。
在我看来非常合理。
您使用的方法不是类方法。通常,类/静态方法是指不与类的任何特定实例关联的方法,而是与类本身关联的方法。在C++中,static用于此操作。
您正在使用的方法称为实例方法。你使用它的方式非常好。您可以在类中使用Greg所指出的引用,而不是传递参数。这完全取决于你的需要。如果该方法仅在一个方法中是必需的,或者如果要使用Boo
是CFoo.Test
的不同实例,则应将它们作为参数传递。但是,如果您一直只需要Boo
的一个实例,那么您可以在CFoo
中创建它,并在所有方法中使用它。你要做什么取决于你的需要。
我对您的代码唯一的反对意见是变量的命名。惯例是用小写字母表示对象/方法,用大写字母表示类。因此参数Boo
应命名为boo
。
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 在静态库中嵌入类方法
- 如何制作一个将函数作为参数的类方法
- 从父类方法返回子类对象
- 使用用户定义的参数调用future/async并调用类方法
- 重载类方法的不明确调用
- 单独定义模板化嵌套类方法的正确语法
- 绑定派生类方法C++从实例范围之外的分隔 std::function 变量调用
- 使用基类中的派生方法运行线程,而无需使用模板
- 如何访问由共享指针保存的类方法?
- 将子类方法声明为基类的友元
- 类方法 - 数据结构中 For 循环的运行时错误
- 停止在线程中运行的类方法
- 初始化期间的运行时类方法替换
- 在运行时C 上覆盖相同的类方法
- 在其他方法之前运行的C 类方法
- C++继承 - 在子类中运行父方法
- 为所有类提供运行时参数的规范方法——global
- 在另一个类方法中运行类方法
- 在运行时不使用虚函数从基类方法访问派生类方法