Posted in C++, Qt, プログラム on 07/25/2009 12:15 pm by bae
Qtアプリケーションを作成していて、undefined reference to vtable for <Class Name>エラーが出るなら、mocが実行されていないか、再実行が必要なケースだ。Qtドキュメント「シグナルとスロット」の実例を参照
Qt Createrで、自分で作成したクラスに”Q_OBJECT”を記述したあとに出た。[ビルド]-[qmakeの実行]を実行したあとビルドすると問題解消。ビルド時に自動で検出してmocを実行してくれればよいのに。
Posted in C++, COOL!!SITE!, python, プログラム, 雑記 on 05/15/2009 09:13 pm by bae
おもしろーい。みんないろいろ触ってるのだなぁ。偶然というか、トラックバックの最初の方、faith_and_braveさんのBLOGはほぼ毎日の様に読んでいる。いろいろ勉強させてもらってます。
で、私の場合。なるべく古い方から思い出しながら。
- N-BASIC (PC-6001/6601/8001/8801/9801時代。) MS-DOSなんて無かった(^^;;
- COBOL(*追加)
- MS-DOSのバッチファイル。言語とは言い難いが….制御構造もあるし..ごりごり書いてたし…
- ExcelVBA
- AccessBasic??
- VisualBasic
- SQL(たしか、AS400上の)
- C
- bash
- Oracle PL/SQL
- Oracle Pro C
- HTML
- CSS
- JavaScript
- VBScript
- Java
- D
- XML
- XSTL
- Perl
- PHP
- emacs lisp
- VBA
- C++(runtime)
- C++(compiletime)
- makefile(*2追加)
- Visual C++のMFC。ま、特有のあれがありますから。
- SQL Server Transact-SQL
- PL/pgSQL
- sed
- wscript?jscript?
- Ruby
- Builder C++のVCL。ま、特有のあれがありますから。
- Python
最初にプログラミング的だと思ってコンピュータに触ったのはLANPLANの表計算式かなぁ。楽しかった。VBは言語というより画面のみで、ロジックはDLLに押し込める使い方が多かったように思う。
あと、言語じゃないけど使ってるもの
他にもありそうだけど…思い出せない。こうやってみるとCLI系は避けてる気がする。今後は関数言語とかOMeta, DSL方面に流れる可能性大。
ついでに、使ったことある開発環境、ミドル、開発ツール関連は..
- Excel4~
- Access2.0~
- VB4, VB6
- VC6
- Borland C++Builder 4, 6
- GNU compiler collection , cとc++
- D compiler
- java SDK
- MinGW, MSYS
- Oracle WAS
- IIS
- Apache
- SQL Server
- PostgreSQL
- MySQL
- Access
- Eclipse
- cygwin
- gnu make, nmake
- global tag system
- meadow, emacs, xemacs
- Emediter
- vi, vim
- mercurial
- cvs
- subversion
- VSS
- openssh
- putty
- AS400用のターミナルソフト。AS400からデータもらえるのがうれしかった。
- snmpデーモン
ふー、いろいろやってきたなぁ。メモリリークのツール使っていたけど、名前忘れた..(^^;;;
今は、meadowとglobal, mercurial, cygwin, perlで事足りてる。
*)学生のときにCOBOLバリバリやってたんだった。追加。
*2)そうかぁ、makeもゴリゴリ書くしね。他の人真似て追加。
Posted in C++, Tips, プログラム on 02/14/2009 02:28 pm by bae
thisをshared_ptrで他のクラスに渡したい場合にどうするか。メモ。
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
using namespace boost;
#include "Y.h"
class X : public enable_shared_from_this<X>
{
private:
Y y_;
public:
void make_reference();
};
void X::make_reference()
{
/* Yに自身を渡す*/
y_ = new Y(shared_from_this());
}
注意点、Y側はshared_ptrからweak_ptrに変換して保持しないと循環参照となりX, Yもdeleteされないことに。また、shared_ptrをコンストラクタで構築すると、コンストラクタを抜けた時に自身が解放されちゃう。
class X
{
public;
X() { shared_ptr<X> x = shared_from_this(); } ///NG
}
参考文献 :