小编Car*_*oli的帖子

如何改进我的课程以创建输出文件

由于我经常需要这个,我想编写一个处理主要流活动的类。

我可以这样使用的东西:

OutputFile out("output.txt");
for (int i = 0; i < 10; ++i)
   out << i << "\n";
Run Code Online (Sandbox Code Playgroud)

为此,我编写了以下类:

class OutputFile {
  std::string filename;
  std::ofstream out;

 public:
  explicit OutputFile(std::string filename) {
    this->filename = filename;
    out.open("output/" + filename);
  }
  ~OutputFile() {
    out.close();
  }
  std::ofstream& operator()() { return out; }
};
Run Code Online (Sandbox Code Playgroud)

这几乎是我想要的,但是我正在重载运算符(),因此在上面的示例中我必须使用

out() << i << "\n";
Run Code Online (Sandbox Code Playgroud)

我应该如何修改我的类以便我可以用作

out << i << "\n";
Run Code Online (Sandbox Code Playgroud)

c++ io

2
推荐指数
1
解决办法
38
查看次数

创建派生类的 std::vector

假设我有一个抽象类

class AbstractClass {
public:
    virtual int get() const = 0;
};
Run Code Online (Sandbox Code Playgroud)

和两个不同的派生类

class DerivedClassA : public AbstractClass {
public:
    int get() const override { return 1; }
};

class DerivedClassB : public AbstractClass {
public:    
    int get() const override { return 2; }
};
Run Code Online (Sandbox Code Playgroud)

我想将std::vectorAbstract Classed 传递给给定的函数:

int f(const std::vector<std::shared_ptr<AbstractClass> >& classes) { ... }
Run Code Online (Sandbox Code Playgroud)

我正在做的是这样的:

int main () {
    std::vector<std::shared_ptr<AbstractClass> > _classes;
    std::shared_ptr<AbstractClass> _derivedA = std::make_shared<DerivedClassA>();
    _classes.push_back(_derivedA);
    std::shared_ptr<AbstractClass> _derivedB = std::make_shared<DerivedClassB>();
    _classes.push_back(_derivedB);
    std::cout << f(_classes) << …
Run Code Online (Sandbox Code Playgroud)

c++ derived-class stdvector

0
推荐指数
1
解决办法
291
查看次数

标签 统计

c++ ×2

derived-class ×1

io ×1

stdvector ×1