Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在同一类的其他成员函数的定义内调用类成员函数_C++ - Fatal编程技术网

C++ 在同一类的其他成员函数的定义内调用类成员函数

C++ 在同一类的其他成员函数的定义内调用类成员函数,c++,C++,在同一个类的另一个成员函数的定义中调用一个类的memberfunction的方法是什么 例如: 文件: 标题.h class A { public: void fn1(); void fn2(); }; 现在在cpp文件中: function.cpp 方法1: #include"header.h" void A::fn1() { //function body for fn1() //What is the way to make a call for fn2()? //assume I h

在同一个类的另一个成员函数的定义中调用一个类的memberfunction的方法是什么

例如: 文件: 标题.h

class A
{
public:
void fn1();
void fn2();
};
现在在cpp文件中: function.cpp

方法1:

#include"header.h"
void A::fn1()
{
//function body for fn1()

//What is the way to make a call for fn2()?
//assume I have definition of fn2() above similar to fn1()

fn2();
} 
方法2:

#include"header.h"
A obj_A;
void A::fn1()
{
//function body for fn1()

//What is the way to make a call for fn2()?
//assume I have definition of fn2() above similar to fn1()

obj_A.fn2();
} 
请澄清哪种方法是正确的

谢谢, C++中的初学者。

< P>方法1是正确的。< /P> 方法2似乎在不同的实例上调用该方法,而不是从中进行调用,这是一种不同的行为。有些情况下,这就是你想要的,但你没有表明这就是你想要的

第一种方法有问题吗?

方法1是正确的

方法2似乎在不同的实例上调用该方法,而不是从中进行调用,这是一种不同的行为。有些情况下,这就是你想要的,但你没有表明这就是你想要的


第一种方法有问题吗?

两种版本都是正确的,但行为不同。第一个版本将在调用f1的同一实例上调用函数,而第二个版本将始终在obj_实例上调用f2。

两个版本都是正确的,但行为不同。第一个版本将在调用f1的同一个实例上调用该函数,而第二个版本将始终在obj_实例上调用f2。

我认为更准确的说法是,这两个函数在技术上都可以工作(即,它们生成有效代码),但是方法2是不正确的,因为函数调用是在不同的对象上进行的。@ValekHalfHeart它不是不正确的,它取决于OP没有明确制定的意图。如果原始调用是
obj_a.fn1()它们将做完全相同的事情(这可能会使单元测试变得有趣)。问题是“在同一类的另一个成员函数的定义内调用一个类的memberfunction的方法是什么?”问题是“同一类的”第二部分告诉我,第一个函数是从定义类行为的上下文调用第二个函数,而不是在对象上调用它。我想这是主观的,我明白你的意思。我认为更准确的说法是,这两种方法在技术上都是有效的(也就是说,它们生成有效的代码),但方法2是不正确的,因为函数调用是在不同的对象上进行的。@ValekHalfHeart它不是不正确的,这取决于OP没有明确确定的意图。如果原始调用是
obj_A.fn1()它们将做完全相同的事情(这可能会使单元测试变得有趣)。问题是“在同一类的另一个成员函数的定义内调用一个类的memberfunction的方法是什么?”问题是“同一类的”第二部分告诉我,第一个函数是从定义类行为的上下文调用第二个函数,而不是在对象上调用它。我想这是主观的,我明白你的意思。