This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
programming:cpp:class [2022/04/18 09:03] odagawa |
programming:cpp:class [2022/05/25 08:01] (current) odagawa |
||
---|---|---|---|
Line 11: | Line 11: | ||
#ifndef MYCLASS_HPP | #ifndef MYCLASS_HPP | ||
#define MYCLASS_HPP | #define MYCLASS_HPP | ||
+ | |||
+ | #include < | ||
+ | |||
+ | #include < | ||
class MyClass { | class MyClass { | ||
Line 20: | Line 24: | ||
bool operator< | bool operator< | ||
| | ||
- | friend std:: | + | friend std:: |
std::size_t h = 0; | std::size_t h = 0; | ||
boost:: | boost:: | ||
Line 46: | Line 50: | ||
</ | </ | ||
- | stream | + | また,デバッグなどでクラスの中身を見たい場合に出力ストリームをオーバーロードしておくと便利.\\ |
+ | < | ||
+ | 実際に使ってみたらできた.\\ | ||
+ | 入出力ストリームの例は以下の通り. | ||
+ | |||
+ | <code cpp MyClass.hpp> | ||
+ | #ifndef MYCLASS_HPP | ||
+ | #define MYCLASS_HPP | ||
+ | |||
+ | #include < | ||
+ | |||
+ | class MyClass { | ||
+ | public : | ||
+ | int var1; | ||
+ | double var2; | ||
+ | |||
+ | friend std:: | ||
+ | friend std:: | ||
+ | |||
+ | }; | ||
+ | |||
+ | </ | ||
+ | |||
+ | <code cpp MyClass.cpp> | ||
+ | #include " | ||
+ | |||
+ | #include < | ||
+ | |||
+ | std:: | ||
+ | os << " | ||
+ | << | ||
+ | |||
+ | return os; | ||
+ | } | ||
+ | |||
+ | std:: | ||
+ | is >> obj.var1 >> obj.var2; | ||
+ | return is; | ||
+ | } | ||
+ | |||
+ | </ | ||
+ | |||
+ | '' | ||
+ | 自動的に '' | ||
+ | テンプレートを使うと上手くいくらしく,グローバルなヘッダーに以下を書いておく. | ||
+ | <code cpp> | ||
+ | |||
+ | template< | ||
+ | F operator!=(T a, T b) { | ||
+ | return !(a==b); | ||
+ | } | ||
+ | |||
+ | </ |