スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C++クラス継承関連エラー対処法メモ

継承されるデストラクタはvirtualを付けて仮想関数にしておく。
付けていない場合、サブクラスのデストラクタは実行されないらしい。



サブクラスで定義しないとエラー→ virtual void func() = 0;
サブクラスで定義しなくても使える→ virtual void func(){};

後述の場合、サブクラスで定義し忘れることがあるので、場面によって使い分けるといいかも。



エラーメッセージで、"undefined reference to 'vtable for <クラス名>'"と出る場合は、仮想関数周りのエラー。
チェックする項目は、
1.サブクラスで定義されるべき関数が定義されているか。
2.空の仮想関数が virtual void func() = 0; のようになっているか。

※ virtual void func(); ではダメです。




エラーメッセージで、”there are no arguments to ‘(クラス名)’ that depend on a template parameter, so a declaration of ‘(メソッド名)’ must be available” と出る場合は、継承元のテンプレートクラスの中身が定義出来てないため。
対処方法は、参照元クラス名<T>::メソッド名、等の様にテンプレートの中身を定義した上で、メソッドを呼び出す。



<参考サイト様方>
http://blog.goo.ne.jp/cilsetyu/e/6fa586a70dac6336f62d3b83e5acaf8a
http://www5c.biglobe.ne.jp/~ecb/cpp/06_09.html

Eclipseのインデクサー設定

EclipseでC++の開発を行っていたのですが、補完機能が何故か使えなかったり、コンパイルは通るのにヘッダーが無いというメッセージが出続けたりと、どうにも使い難い点がありました。

という訳で、何か解決策がないかと調べたところ、インデクサーの設定を変えれば上手くいくかも、という情報を得たので少し変えてみました。


インデクサーの設定を、デフォルトの「高速C/C++ インデクサー」から「フルC/C++ インデクサー」に変更して、「Index unused headers」にもチェックを入れたところ、今のところ意図した動作をしています。
(一部のヘッダーは無いというメッセージが残ってますが・・・)




※追記1:フルインデクサ(Full C/C++ Indexer)は処理が重いので、基本的には高速インデクサ(Fast C/C++ Indexer)に設定し、Skip系のチェックを全て外し、その他にチェックが入っていれば問題ないと思います。
それでも上手く行かない場合は、Eclipse for C/C++ でインデクサが更新されなくなった時の対処のページを参照して下さい。

※追記2:ヘッダーに対する対処はEclipse for C/C++ でインクルードファイルに警告が出る時の対処のページを参照。



インデクサーの設定は、ウィンドウ>C/C++>インデクサーから行えます。

ちなみに試したのは、galileoのlinux版、日本語化済みのEclipseです。


現在はインデクサーのキャッシュ制限について実験中なので、また何か分かったら追記します。


<参考サイト様>
http://monoist.atmarkit.co.jp/fembedded/articles/eclipseccplusplus/02/eclipseccplusplus02c.html

C++で行列演算

ちょっと行列演算が必要になったので、C++で良い行列計算ライブラリーがないかなー、と検索をかけてみたら、早速ソースコードを公開しているサイトが見つかりました↓

http://www.eng.maritime.kobe-u.ac.jp/~i_asano/misc/matrix/matrix.html

行列同士の演算が"+"や"*"で出来、逆行列や転置行列を求める関数も用意されているので、十分に実用的かと思います。
ただ、行列の要素をまとめて設定するような関数が用意されていなかった&演算が失敗したときに終了してしまう、という仕様が個人的には嫌だったので少し改造して使わせていただいております。

ちなみにLinuxでコンパイルが上手く行かないときは、matrix.hの7行目を

#include < iostream.h> → #include < iostream>
// "<"の後に半角スペースが入っているのはブログの仕様です

と変えれば上手く行くかと。
Ubuntu8.10ではこれだけでコンパイルが通りました。

theme : プログラミング
genre : コンピュータ

Fedora yumでgccのインストール

FedoraでEcripseを使ってC++のプログラムを書いていたのですが、thisを使うとコンパイルエラーになってしまいました。
hoge->hogehoge->kore というポインタ参照からさらにポインタ参照してもコンパイルエラーになるという意味の分からない状況に…
エラーメッセージは"with in this context"という頼りない情報だし・・・。


原因は単純にC++開発に必要なコンパイラが足りていなかったという単純なものでした。
インストールするときに、何か入れ忘れてたみたいですorz

# yum install gcc* compat*

以上のコマンドでC++の開発に必要なものは揃うようです。
最初からこのコマンドを打っておけば間違いないですね。

何はともあれ、これで安心して開発が出来ます。
参考にさせて頂いた、TMCosmos様に感謝。

theme : プログラミング
genre : コンピュータ

C++でひらがなをローマ字に変換

OpenCVでは日本語テキストを描画できませんよね。
でも、どうしてもひらがなのデータを確認用に表示したくなりまして・・・

だったらローマ字で表示すればいいんじゃない?

というわけで、全角ひらがなを半角ローマ字に変換するプログラムを書きました。
今回はmapを使って実装してみました。

環境はLinux(Fedora)で、文字コードはUTF-8です。
それ以外の環境の場合はStringComparatorをいじる必要があります。

toStringの説明はC++で色々なデータ型をstringに変換
StringComparatorの説明はC++で全角と半角の混じった文字から1文字ずつ取り出すを参照してください。

ソースコードは↓より

この記事の続きを読む

theme : プログラミング
genre : コンピュータ

getopt関数について

linuxのC、C++でオプションを付けて実行するプログラムを書きたい時はgetopt関数が便利なようです。

使い方と簡単な解説は続きより↓

この記事の続きを読む

theme : プログラミング
genre : コンピュータ

C++で全角と半角の混じった文字から1文字ずつ取り出す

今回やりたいことは例えば、"みっくみくにshiteやんよ"という文字列から、"み"や"s"を1文字毎に読み出せるようにすることです。

VisualStudioを使えば簡単にできるのですが、Linuxでは容易にやる方法がなさそうだったので自分で書いてしまいました。

なお、文字コードはUTF-8の場合を想定しています。
文字コードが違う場合は条件式を少しいじる必要があるかと。

ソースコードは続きから↓

この記事の続きを読む

FedoraにOpenCVをインストールする

FedoraにOpenCVをインストールするのに予想以上に苦戦したのでメモを残します。

<OpenCVインストール方法>

1.ソースをダウンロードし展開する
ソースコードはSourceForgeにて公開中→http://sourceforge.net/projects/opencvlibrary/
view all filesボタンで好きなバージョンを選ぶことができます。
なお、動作は”1.1pre1”にて確認いたしました。

2.必要なライブラリのダウンロード
# yum install gtk2-devel libjpeg-devel libtiff-devel

3.展開したディレクトリにて
$ ./configure
$ make
# make install
# ldconfig

4.動作確認
# cd /usr/local/share/opencv/sample/c
# sh build_all.sh

このコマンドで正常にコンパイルされればOpenCVインストールは成功しています。

これで上手くいかない場合は↓

この記事の続きを読む

プロフィール

シロマ=ナノ

Author:シロマ=ナノ
参加予定イベント:
 ・C91 3日目西め28a

DIVA-AC:
 LV.199 白のシンフォニア

Flashカレンダー
Twitter
カテゴリ
最新記事
PCLクレジット
当ブログは、ピアプロ・キャラクター・ライセンス(http://piapro.jp/license/pcl)に基づいて、クリプトン・フューチャー・メディア株式会社のキャラクター 「初音ミク」「鏡音リン」「鏡音レン」「巡音ルカ」「Meiko」「Kaito」及びそれらに依拠して制作されたキャラクター「亞北ネル」「弱音ハク」を描いた作品を公開しています。
アクセスカウンター
検索フォーム
主な作品
WindowHelper(フリーソフト)
WindowHelperポップ

描いた絵・イラスト
リンク
バナー
当サイトはリンクフリーです。
バナーを使用したい場合は以下の画像をお使い下さい。
(リンク先に200x40サイズを置いてあります)

・通常版
banner

・ミク版
banner
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。