/ CPP_Modules / CPP_Module_04 / ex03 / AMateria.hpp
AMateria.hpp
 1  /* ************************************************************************** */
 2  /*                                                                            */
 3  /*                                                        :::      ::::::::   */
 4  /*   AMateria.hpp                                       :+:      :+:    :+:   */
 5  /*                                                    +:+ +:+         +:+     */
 6  /*   By: gychoi <gychoi@student.42seoul.kr>         +#+  +:+       +#+        */
 7  /*                                                +#+#+#+#+#+   +#+           */
 8  /*   Created: 2023/08/17 22:00:08 by gychoi            #+#    #+#             */
 9  /*   Updated: 2023/08/17 22:11:13 by gychoi           ###   ########.fr       */
10  /*                                                                            */
11  /* ************************************************************************** */
12  
13  #pragma once
14  #ifndef __AMATERIA_HPP__
15  # define __AMATERIA_HPP__
16  # include <string>
17  
18  class	ICharacter;
19  
20  class	AMateria
21  {
22  	protected:
23  		std::string	type;
24  
25  	public:
26  		AMateria(void);
27  		virtual ~AMateria(void);
28  		AMateria(std::string const& type);
29  		AMateria(AMateria const& target);
30  		AMateria&	operator=(AMateria const& target);
31  
32  		std::string const&	getType(void) const;
33  		virtual AMateria*	clone(void) const = 0;
34  		virtual void		use(ICharacter& target);
35  };
36  
37  #endif	/* __AMATERIA_HPP__ */