📄 trash.h
字号:
//: C25:Trash.h
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
// Base class for Trash recycling examples
#ifndef TRASH_H
#define TRASH_H
#include <iostream>
#include <exception>
#include <vector>
#include <string>
class TypedBin; // For a later example
class Visitor; // For a later example
class Trash {
double _weight;
void operator=(const Trash&);
Trash(const Trash&);
public:
Trash(double wt) : _weight(wt) {}
virtual double value() const = 0;
double weight() const { return _weight; }
virtual ~Trash() {}
class Info {
std::string _id;
double _data;
public:
Info(std::string ident, double dat)
: _id(ident), _data(dat) {}
double data() const { return _data; }
std::string id() const { return _id; }
friend std::ostream& operator<<(
std::ostream& os, const Info& info) {
return os << info._id << ':' << info._data;
}
};
protected:
// Remainder of class provides support for
// prototyping:
static std::vector<Trash*> prototypes;
friend class TrashPrototypeInit;
Trash() : _weight(0) {}
public:
static Trash* factory(const Info& info);
virtual std::string id() = 0; // type ident
virtual Trash* clone(const Info&) = 0;
// Stubs, inserted for later use:
virtual bool
addToBin(std::vector<TypedBin*>&) {
return false;
}
virtual void accept(Visitor&) {};
};
#endif // TRASH_H ///:~
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -