mcrblog

vcpp-ml

2002年05月

31

[vcpp 00058621] Re: メンバ関数のテンプレート

Tietew です。

On Fri, 31 May 2002 19:59:24 +0900
In article <005001c20892$643f1b60$160110ac@CSKCBPC>
[[vcpp 00058619] メンバ関数のテンプレート]
"mika-n" <m...@m18.alpha-net.ne.jp> wrote:

> Visual C++ 6.0 って、メンバテンプレート使えないのでしょうか?

> template <class U> struct hoge {
>     template <class T> void foo(T a);
> };

> template <class U> template <class T> void hoge<U>::foo(T a) {
>     std::cout<<typeid(T).name()<<std::endl;
>     std::cout<<typeid(U).name()<<std::endl;
> }

インラインにすると書けます。
template<class U> struct hoge {
    template<class T> void foo(T a) {
        std::cout << typeid(T).name() << std::endl;
        std::cout << typeid(U).name() << std::endl;
    }
};




―[ Tietew ]――――――――――――――――――――――――――――
Mail: t...@tietew.net / t...@raug.net
Web : http://www.tietew.net/     Tietew Windows Lab.
PGP fingerprint: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA
31

[vcpp 00058621] Re: メンバ関数のテンプレート

Tietew です。

On Fri, 31 May 2002 19:59:24 +0900
In article <005001c20892$643f1b60$160110ac@CSKCBPC>
[[vcpp 00058619] メンバ関数のテンプレート]
"mika-n" <m...@m18.alpha-net.ne.jp> wrote:

> Visual C++ 6.0 って、メンバテンプレート使えないのでしょうか?

> template <class U> struct hoge {
>     template <class T> void foo(T a);
> };

> template <class U> template <class T> void hoge<U>::foo(T a) {
>     std::cout<<typeid(T).name()<<std::endl;
>     std::cout<<typeid(U).name()<<std::endl;
> }

インラインにすると書けます。
template<class U> struct hoge {
    template<class T> void foo(T a) {
        std::cout << typeid(T).name() << std::endl;
        std::cout << typeid(U).name() << std::endl;
    }
};




―[ Tietew ]――――――――――――――――――――――――――――
Mail: t...@tietew.net / t...@raug.net
Web : http://www.tietew.net/     Tietew Windows Lab.
PGP fingerprint: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA
31

[vcpp 00058620] Re: CMainFlameオブジェクトのアドレス

こんばんは、菱田です。



On 2002.05.30 16:31:22
subject: CMainFlameオブジェクトのアドレス
Takeshi Naito <t...@elecs.co.jp> wrote:

> SDIアプリケーション(Document-Viewあり)において、CMainFlameオブジェクトのポインタを
> 取得しようとしたのですが、どのようにしたらとれるのか分かりません。

CMainFrame *pFrm = (CMainFrame*)AfxGetApp()->m_pMainWnd;

では どうですか?



//---------------------------------------
// 菱田 真人 h...@asahi.email.ne.jp
// http://www.ne.jp/asahi/hishidama/home/
// ↑最近はソードワールド更新中
//---------------------------------------
31

[vcpp 00058620] Re: CMainFlameオブジェクトのアドレス

こんばんは、菱田です。



On 2002.05.30 16:31:22
subject: CMainFlameオブジェクトのアドレス
Takeshi Naito <t...@elecs.co.jp> wrote:

> SDIアプリケーション(Document-Viewあり)において、CMainFlameオブジェクトのポインタを
> 取得しようとしたのですが、どのようにしたらとれるのか分かりません。

CMainFrame *pFrm = (CMainFrame*)AfxGetApp()->m_pMainWnd;

では どうですか?



//---------------------------------------
// 菱田 真人 h...@asahi.email.ne.jp
// http://www.ne.jp/asahi/hishidama/home/
// ↑最近はソードワールド更新中
//---------------------------------------
31

[vcpp 00058619] メンバ関数のテンプレート

Visual C++ 6.0 って、メンバテンプレート使えないのでしょうか?

template <class U> struct hoge {
    template <class T> void foo(T a);
};

template <class U> template <class T> void hoge<U>::foo(T a) {
    std::cout<<typeid(T).name()<<std::endl;
    std::cout<<typeid(U).name()<<std::endl;
}

int main(){
    hoge<int> h;
    h.foo("文字 ");
}

BCC55 では問題なく通るのですが、
VC6.0 だと、関数テンプレート定義の部分で、
    error C2059: 構文エラー : ''template<''
となってしまいます。

また、

struct hoge {
    template <class T> void foo(T a);
};

template <class T> void hoge::foo(T a) {
    std::cout<<typeid(T).name()<<std::endl;
}

int main(){
    hoge h;
    h.foo("文字 ");
}

このような場合では、
    error C2893: 関数テンプレート 'void __thiscall hoge::foo(T)' の特定に失敗しました
になります。


マイクロソフトの VC のページには、
>● Visual C++ 6.0 ではメンバ テンプレートがサポートされていますか ? 
>はい。メンバ テンプレートは、Visual C++ 6.0 と Visual C++ 5.0 でサポートされています。

とかかれているのですが……。


VC7 だとうまくいくのでしょうか?
(VC + Intelのコンパイラの組み合わせだと多分ばっちりでしょうね)



Re: [vcpp 0058611]
かもめsan>Realese版では何の不都合も無いはずなので、堂々と無視しちゃってください
  言い切っちゃいました(笑)
  堂々と無視する自信がつきました (^^;;;

                                                                                        みかり☆でした
記事検索
Amazon.co.jp
  • ライブドアブログ