テンプレートクラスのprivate継承でインターフェイス増やす

zxc
記事: 79
登録日時: 13年前
住所: 日本の背骨(?)あたり

テンプレートクラスのprivate継承でインターフェイス増やす

投稿記事 by zxc » 10年前

 タイトルのような事がC++では出来るっぽい。operator+=へのoperator+の実装の委譲なんかが検索すると出てくる。ここでoperator boolについて似たような事を考える。

CODE:

template
class Validable{
	public:
		typedef T type;
		inline friend bool operator!(const type& t){return !( t.operator bool() );}//OK

		inline friend bool IsValid(const type& t){return ( t.operator bool() );}//ダメ
		inline friend bool IsInvalid(const type& t){return !( t.IsValid() );}//ダメ
};
 継承する子クラスがoperator boolを実装してテンプレート引数には子クラスが入る。CRTP/奇妙に再帰したテンプレートパターンとか言ったと思う


 なんでoperatorだとコンパイル通るのにユーザ定義メソッドだとコンパイル通らないのかわからぬ・・・これ前にも出会ったことのある現象のような・・・うーん
最後に編集したユーザー zxc on 2015年8月02日(日) 15:29 [ 編集 1 回目 ]

zxc
記事: 79
登録日時: 13年前
住所: 日本の背骨(?)あたり

Re: テンプレートクラスのprivate継承でインターフェイス増やす

投稿記事 by zxc » 10年前

 operatorではないからクラスの参照をとるのは不適切か・・・

zxc
記事: 79
登録日時: 13年前
住所: 日本の背骨(?)あたり

Re: テンプレートクラスのprivate継承でインターフェイス増やす

投稿記事 by zxc » 10年前

 解決: friendは継承できない。operatorは子クラスの参照とるから出来る?