検索結果 6 件

by kddoi
10年前
フォーラム: C言語何でも質問掲示板
トピック: 純粋仮想関数を派生クラスでtemplateを使ってオーバーライド
返信数: 7
閲覧数: 10243

Re: 純粋仮想関数を派生クラスでtemplateを使ってオーバーライド

zeek様 追加で返信いただき、ありがとうございます。 usao様のものが、呼び出される関数の時点からデータ型別に分かれており、オーバーライドされた派生クラスの 関数で、それぞれのデータ型に対応したtemplate関数を呼び出す書き方で(説明が不正確かもしれませんが)、 一方でzeek様のものが、基底クラスの関数までは一つの関数で、そこから仮想関数を呼び出す際に データ型別に分かれ、派生クラスのオーバーライドしたメンバ関数からtemplate関数を呼び出す、 という実装と理解しました。基底クラスの関数の部分で共通した処理を一箇所にまとめて記述した後、 各派生クラスのメンバ関数を呼び出したりする...
by kddoi
10年前
フォーラム: C言語何でも質問掲示板
トピック: 純粋仮想関数を派生クラスでtemplateを使ってオーバーライド
返信数: 7
閲覧数: 10243

Re: 純粋仮想関数を派生クラスでtemplateを使ってオーバーライド

usao様、h2so5様 ありがとうございます。大変勉強になります。 dynamic_castを使う方法もあったんですね。typeidなどによって実行時情報を元に処理を 分けることも考えたのですが、今実装しようとしているメンバ関数以外にも既に様々な関数を 純粋仮想関数として実装が終わっております。今実装しようとしている関数のみ、 dynamic_castの結果がNULLかどうかの分岐が必要となってしまうので、他のコードとの 整合性の観点で今回はこちらの実装は避けようと思いますが、こういう方法も存在することは 頭の片隅に留めておき、次回以降に生かしたいと思います。 基底クラスの方に、たくさん書か...
by kddoi
10年前
フォーラム: C言語何でも質問掲示板
トピック: 純粋仮想関数を派生クラスでtemplateを使ってオーバーライド
返信数: 7
閲覧数: 10243

Re: 純粋仮想関数を派生クラスでtemplateを使ってオーバーライド

テンプレートと仮想関数はC++の仕様上両立できないので、どちらかをあきらめることになります。 派生クラスの種類が少ないのであれば仮想関数をやめて手動でディスパッチする手もあります。 やはり、仮想関数とテンプレートは両立できないのですね。仕様書を隅々まで読んで把握できるレベルに逹っして おりませんので、正しいコーディングを知らないために冗長な書き方になっているのではなく仕様上の限界と分かり、 安心いたしました。ありがとうございます。同じような処理を一部だけ変えて反復して記述していると、変更が生じた際の 書き換えでバグの原因となりますので、できるだけ簡略な書き方にしたいと思います。それから、手動...
by kddoi
10年前
フォーラム: C言語何でも質問掲示板
トピック: 純粋仮想関数を派生クラスでtemplateを使ってオーバーライド
返信数: 7
閲覧数: 10243

純粋仮想関数を派生クラスでtemplateを使ってオーバーライド

度々お世話になっております。表題の件で困っており、色々と調べたのですが解決策には 至っておりません。もし何かヒントのようなものを頂ければ幸いです。 基本クラスにて純粋仮想関数を定義し、それを派生クラスでオーバーライドしております。 基本クラスのポインタを使って派生クラスのオブジェクトを保持し、複数ある派生クラスの動作を 基本クラスの関数で統一的に呼び出すために使っております。 今、派生クラスの方で定義をする関数が、内容はほとんど同じでデータ型のみが異なり、 templateが使えれば非常に楽ができます。ところが、色々と試したのですが、現状だと Windows 7 x64上のg++ (tdm64...
by kddoi
10年前
フォーラム: C言語何でも質問掲示板
トピック: ベクトルを扱うクラスを作りたい
返信数: 2
閲覧数: 2570

Re: ベクトルを扱うクラスを作りたい

あてずっぽうですが, コンパイルエラーはこの辺の話が関連してるんじゃないでしょうか http://q.hatena.ne.jp/1167111891 Object(Object &obj) Object &operator=(Object &val) どちらも引数の型を const Object & にしたら解消しませんか? usao様 さっそくありがとうございました。まさにその通りで、constを付けることでコンパイルが 通るようになりました。以下、少々と細かい話になりますが、 最初はconstを付けていたのですが、operator=の関数内では代入される側(左辺)が、 代入する側(右辺)...
by kddoi
10年前
フォーラム: C言語何でも質問掲示板
トピック: ベクトルを扱うクラスを作りたい
返信数: 2
閲覧数: 2570

ベクトルを扱うクラスを作りたい

はじめまして。表題の通り、ベクトルを扱って計算をさせるクラスをC++で 作ろうとしております。プログラム歴は短くはないですが、本格的に 開発している期間はそれ程長くないので、1~2年くらいに相当すると思います。 データを一つのクラスとして扱い、組み込みのintやdoubleなど型と同じ ような感覚で扱えるようなものを作りたいと思っております。 よってプログラム自体は込み入ったものになっておりますが、できるだけ 容易に理解していただけるよう単純化しており、あまり意味のないコードに なっておりますが、必要でしたらさらに詳しく説明いたします。 (実際には以下のコードのクラスがさらに内部にクラスを持っ...

詳細検索ページへ移動する