📄 eoaged.h
字号:
// eoAged.h// -*- mode: c++; c-indent-level: 4; c++-member-init-indent: 8; comment-column: 35; -*-//-----------------------------------------------------------------------------// eoAge.h// (c) GeNeura Team, 1998/* This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Contact: todos@geneura.ugr.es, http://geneura.ugr.es *///-----------------------------------------------------------------------------#ifndef EOAGED_H#define EOAGED_H//-----------------------------------------------------------------------------#include <iostream> // istream, ostream#include <std::string> // para std::stringusing namespace std;//-----------------------------------------------------------------------------// eoAge//-----------------------------------------------------------------------------/** eoAge is a template class that adds an age to an object.\\Requisites for template instantiation are that the object must admit a default ctor and a copy ctor. The Object must be an eoObject, thus, it must have its methods: className,printOn, readFrom.@see eoObject*/template <class Object>class eoAged: public Object{ public: /// Main ctor from an already built Object. eoAged( const Object& _o): Object( _o ), age(0) {}; /// Copy constructor. eoAged( const eoAged& _a): Object( _a ), age( _a.age ) {}; /// Virtual dtor. They are needed in virtual class hierarchies virtual ~eoAged() {}; ///returns the age of the object unsigned long Age() const {return age;} /// Increments age const eoAged& operator ++ () { age++; return *this;} /** @name Methods from eoObject readFrom and printOn are directly inherited from eo1d *///@{ /** Return the class id. This should be redefined in each class; but it's got code as an example of implementation. Only "leaf" classes can be non-virtual. */ virtual std::string className() const { return std::string("eoAged")+Object::className(); }; /** * Read object. * @param _is A istream. * @throw runtime_exception If a valid object can't be read. */ virtual void readFrom(istream& _is) { Object::readFrom( _is ); _is >> age; } /** * Write object. It's called printOn since it prints the object _on_ a stream. * @param _os A ostream. */ virtual void printOn(ostream& _os) const{ Object::printOn( _os ); _os << age; }//@} private: /** Default Constructor. \\ It磗 private so that it is not used anywhere; the right way of using this object is to create an Object and passing it to an aged by means of the copy ctor; that way it磗 turned into an Aged object*/ eoAged(): Object(), age(0) {}; unsigned long age;};#endif EOAGE_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -