基本は以下にしたがってインストール
http://tortoisesvn.net/docs/release/TortoiseSVN_ja/tsvn-serversetup-apache.html
Subversionサーバーをインストールした際にバイナリのパスが環境変数に登録されるが、(環境変数なので)ログインしなおさないと反映されない。その状態で.soファイルをコピってApacheを再起動しても.soの読み込みに失敗する。これは.soが参照しているdllにアクセスできないためと思われる。
2009年2月12日木曜日
2009年1月30日金曜日
コンテナクラステンプレートにポインタを格納するときの型の問題
こんなの。
上記の例ではT1がT2*と指定されるので、BaseContainer::find()の引数の型はT2* const &になる。それに対して&t2の型はT2 const*である。言い換えるとBaseContainer::find()の引数はポインタ値にconstがついており、ポインタが参照している領域にはconstがついてないが、&t2はポインタが参照している領域にconstがついている。したがってポインタからconstを外さないとBaseContainer::find()に渡せない。
BaseContainerは他の箇所でも使うので、find()の引数の型を変えたくはない。またElementContainerは外部仕様的にはポインタを意識させたくない。
とりあえずfind()を呼び出すときに&const_cast<T2&>(t2)として逃げたけど、本当はどう書くとよいのだろう?
template <typename T1>
class BaseContainer
{
public:
iterator find(const T1& t1);
};
template <typename T2>
class ElementContainer
{
public:
iterator find(const T2& t2)
{
return iterator(m_entity.find(&t2));
// ここでconst外しになる。
}
private:
BaseContainer<T2*> m_entity;
};
上記の例ではT1がT2*と指定されるので、BaseContainer::find()の引数の型はT2* const &になる。それに対して&t2の型はT2 const*である。言い換えるとBaseContainer::find()の引数はポインタ値にconstがついており、ポインタが参照している領域にはconstがついてないが、&t2はポインタが参照している領域にconstがついている。したがってポインタからconstを外さないとBaseContainer::find()に渡せない。
BaseContainerは他の箇所でも使うので、find()の引数の型を変えたくはない。またElementContainerは外部仕様的にはポインタを意識させたくない。
とりあえずfind()を呼び出すときに&const_cast<T2&>(t2)として逃げたけど、本当はどう書くとよいのだろう?
2009年1月29日木曜日
Programming: Principles and Practice Using C++ (0)
今日から Programming: Principles and Practice Using C++ を読み進めてみる。
- 英語は苦手なので、少しずつゆっくり。
- 仕事の合間に1日1ページ。
登録:
投稿 (Atom)