C++ Loader类

标签 c++ loader

我正在考虑一个加载器类,并想出了两种不同的方法。

class Loader{
public:
  Loader(const Path& path);
  File load() const;

private:
  Path path_;
};

对比

class Loader{
public:
  Loader();
  File load(const Path& path) const;
};

使用第一种方法,每个文件需要一个 Loader,并且 Loader 类代表一种状态。使用第二个,我可以使用一个加载器类加载不同的文件。 除了这些明显的差异之外,您会选择哪种方法?为什么或者是否有第三种可能更好的方法?

最佳答案

还有其他方法。

如果加载文件时在Loader类中不维护任何状态,那么您可以简单地编写一个自由函数

File load(const Path& path); //a free function.

或者,如果您希望函数成为成员函数,则可以将其设为静态

class Loader{
public:
  static File load(const Path& path);
};

//usage
Loader::load(path);

有时这样的解决方案完全取决于具体情况,有时取决于公司/程序员的个人喜好和品味。没有一种最佳解决方案!

您甚至可以选择在 File 类本身中编写 load 函数:

class File {
public:
  bool load(const Path& path); //non-static, or/and the next one!
  static File load(const Path& path); //static
};

在这里,也许您想要更改函数的名称:open() 似乎比 load() 更好。

关于C++ Loader类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5203467/

相关文章:

C++无法得到中值的正确答案

c++ - 如何在 C++11 之前进行函数柯里化(Currying)

jquery - will_paginate + 无限滚动插件 - 不显示 "Loading"消息

android - 更新 onLoadFinished 中的列导致我的查询无限运行

javascript - 如何知道 PDF 文件在 PDFjs 上的加载百分比

c++ - 向同一进程中的另一个线程发出信号

c++ - 不使用指针遍历 C 风格的数组

C++:将字节缓冲区转换为另一种类型时的对齐

actionscript-3 - 无法加载 YouTube 缩略图。安全沙箱违规 : LoaderInfo. 内容 : cannot access '*.png' . 没有授予访问权限的策略文件

Android:防止不同的微调器高度(空的和填充的)