Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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++_Oop - Fatal编程技术网

C++ 执行小型、非常专业任务的方法应该放在哪里?

C++ 执行小型、非常专业任务的方法应该放在哪里?,c++,oop,C++,Oop,在过去的几次快速编码挑战中,这个问题一直困扰着我 我有一个名为沙漏的类,它在构造函数中使用表示大写字母的char(例如“D”),并有一个方法print(),该方法打印如下内容: AAAAAAA BBBBB CCC D CCC BBBBB AAAAAAA void Hourglass::print() const { final int centreCol = (mFinalChar - 'A'); for(char c = 'A'; c <= mFin

在过去的几次快速编码挑战中,这个问题一直困扰着我

我有一个名为沙漏的类,它在构造函数中使用表示大写字母的
char
(例如“D”),并有一个方法
print()
,该方法打印如下内容:

AAAAAAA
 BBBBB
  CCC
   D
  CCC
 BBBBB
AAAAAAA
void Hourglass::print() const
{
    final int centreCol = (mFinalChar - 'A');

    for(char c = 'A'; c <= mFinalChar; ++c) {
        std::cout << computeLine(centreCol, c - 'A', c) << std::endl;
    }

    for (char c = mFinalChar - 1; c >= 'A'; --c) {
        std::cout << computeLine(centreCol, c - 'A', c) << std::endl;
    }
}
打印看起来像:

AAAAAAA
 BBBBB
  CCC
   D
  CCC
 BBBBB
AAAAAAA
void Hourglass::print() const
{
    final int centreCol = (mFinalChar - 'A');

    for(char c = 'A'; c <= mFinalChar; ++c) {
        std::cout << computeLine(centreCol, c - 'A', c) << std::endl;
    }

    for (char c = mFinalChar - 1; c >= 'A'; --c) {
        std::cout << computeLine(centreCol, c - 'A', c) << std::endl;
    }
}
computeLine()
应该在哪里?它是否应该是类的私有成员(它不需要对象中包含的任何信息)?它应该位于类之外的匿名命名空间中吗?我是否应该以某种方式避免这种方法


我知道这可能是一个有点固执己见的话题,但我确信至少有一些争论可以让我下定决心。

“它应该在类外的匿名命名空间中吗?”我会选择这个选项。但是你的问题没有简单的回答,很可能会得到自以为是的答案。我会惊讶地看到
Hourglass
类并发现这样一个私有成员函数。因此,我将它放在类之外。如果<代码>计算行< /COD>只从该代码>打印< /COD>函数内调用,则考虑一个匿名的lambda作用于该函数。如果它仅由同一个类的其他函数调用,则可以声明为“代码>私有< /代码>。如果它仅由继承类的其他函数调用,则可以声明它受保护。如果它不需要包含在对象中的任何信息,那么可以声明它为
static
“它是否应该在类之外的匿名命名空间中?”我会选择此选项。但是你的问题没有简单的回答,很可能会得到自以为是的答案。我会惊讶地看到
Hourglass
类并发现这样一个私有成员函数。因此,我将它放在类之外。如果<代码>计算行< /COD>只从该代码>打印< /COD>函数内调用,则考虑一个匿名的lambda作用于该函数。如果它仅由同一个类的其他函数调用,则可以声明为“代码>私有< /代码>。如果它仅由继承类的其他函数调用,则可以声明它受保护。如果它不需要包含在对象中的任何信息,那么可以将其声明为
static