ページ 11

shared_ptrが使えない

Posted: 2012年2月16日(木) 00:51
by wiruka
現在スマートポインタの勉強をしていてそのテストプログラムを組むところなのですが、
コンパイルするときに
\boost_1_48_0\boost\assert.hpp(104) : error C2039: 'abort' : 'std' のメンバではありません。
というエラーが出てきてしまい対処に困っています。
(ライブラリはこちらhttp://www.boost.org/で入手したものです)
自前のコードを修正するのとは違うのでどうすればいいのかわかりません、
どなたか解決するすべをご教授願えればとおもいます。
Visual C++6.0を使っています。

Re: shared_ptrが使えない

Posted: 2012年2月16日(木) 10:48
by たかぎ
wiruka さんが書きました:Visual C++6.0を使っています。
なぜそんな古いコンパイラを使っているのかわかりませんが...
Boost C++ Libraries 1.48.0は、Visual C++ 2005以降しかサポートされていなかったはずです。
もっと新しいコンパイラに変えるか、もっと古いバージョンのBoost C++ Librariesを使ってください。

Re: shared_ptrが使えない

Posted: 2012年2月16日(木) 10:57
by softya(ソフト屋)
少なくともVC++6.0はBOOST1.48では対象としていないのは確かですね。
テストコンパイラがVC++8.0以上って書いてあります。

VC++6.0にstd::abortがあるか調べてみて下さい。
無ければboostを古いものにするかVC++8.0以降を使うかです。

Re: shared_ptrが使えない

Posted: 2012年2月16日(木) 13:18
by たかぎ
softya(ソフト屋) さんが書きました:VC++6.0にstd::abortがあるか調べてみて下さい。
Visual C++ 6.0はきわめて標準準拠度が低く(というか、ISO/IEC 14882:1998以前の処理系です)、std::abortはありません。
もっと正確にいうと、<cstdlib>をインクルードしても、::abortが宣言されます。

ちなみに、Visual C++ 2010でも本来の意味でのstd::abortはありません。
<cstdlib>をインクルードすると、<stdlib.h>で宣言された::abortをstd名前空間でusingしているだけです。

Re: shared_ptrが使えない

Posted: 2012年2月17日(金) 00:25
by wiruka
たかぎさん、softya(ソフト屋) さん返信ありがとうございます、
一度こちらも返信したのですが何故か掲示板に反映されなかったらしく対応が遅れてしまいました(汗
Vc++6.0をしつこくつかってきていたのは手持ちの参考書が6.0を対象にしたものだったからですが、
これを機に2010Expressionの方を使うことにしました