C++ 在另一个类方法中运行类方法
我想在另一个类的另一个函数方法中运行一个类的函数方法。我编写了以下代码作为示例,它编译并返回预期值。我的问题是,这是否是在另一个类方法中执行类方法计算的正确方法 问候C++ 在另一个类方法中运行类方法,c++,class,class-design,C++,Class,Class Design,我想在另一个类的另一个函数方法中运行一个类的函数方法。我编写了以下代码作为示例,它编译并返回预期值。我的问题是,这是否是在另一个类方法中执行类方法计算的正确方法 问候 #include <iostream> class CBoo { public: CBoo(); void Test(); void Plot(); private: int b; }; CBoo::CBoo() { b = 3; } void
#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++中,静态是用于此的。 您正在使用的方法称为实例方法。你使用它的方式非常好。而不是传递参数,你可以像Greg所指出的那样在类中有一个引用。这完全取决于你的需要。如果只在一个方法中需要该方法,或者如果要使用Boo is CFoo.Test的不同实例,则应将它们作为参数传递。但是如果您一直只需要一个Boo实例,那么您可以在CFoo中创建它,并在所有方法中使用它。你将做什么取决于你的需要
我对您的代码唯一的异议是变量的命名。惯例是用小写字母表示对象/方法,用大写字母表示类。所以参数Boo应该被命名为Boo。对于类方法和实例方法来说,这是一个很好的观点。我也同意,即使对测试代码进行更清晰的命名也是一个好主意,尽管我要指出命名约定不是通用的。@Greg,是的,它们不是通用的。有些语言/框架/书籍在方法中使用了大写字母。但在C++/Java/Obj-C/AS3中,这一约定大部分是遵循的。