typedefテンプレート

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
kazuoni

typedefテンプレート

#1

投稿記事 by kazuoni » 16年前

お邪魔します。
以下に記述するtypedefを用いた構造体にテンプレートを使用したいのですが、
コンパイルエラーを避けるためには
どのように記述するのが一番なんでしょうか?

msdn コンパイラ エラー C2823
ttp://msdn.microsoft.com/ja-jp/library/w191kaf4.aspx

コードを引用したのを以下に示します。
template<class T>
typedef struct x {
   T i;   // C2823 can't use T, specify data type and delete template
   int i;   // OK
} x1;
よろしくお願いします。

tk-xleader

Re:typedefテンプレート

#2

投稿記事 by tk-xleader » 16年前

typedefを削除してください。

たかぎ

Re:typedefテンプレート

#3

投稿記事 by たかぎ » 16年前

typedefを削除するだけではだめです。
結局何をしたいかによって、どう修正するかが変わってきます。

kazuoni

Re:typedefテンプレート

#4

投稿記事 by kazuoni » 16年前

tkさん、たかぎさん、ご回答ありがとございます。

行列を制御するクラスを作っていて、
そのクラスで行列の要素を構造体のメンバとして、持たせます。
そこで、要素の型をクラスオブジェクト宣言時に指定したかったんです。
すると、構造体にもテンプレートが必要になって、質問したような問題に躓きました。

別にメンバを構造体にしなくてもいいじゃないかってなるんですけど、
行列の乗算を行う関数で使うために、要素がまとまっている構造体をm1,m2として、
mamul(m1,m2)としたかったので、構造体が必要になってます。

Justy

Re:typedefテンプレート

#5

投稿記事 by Justy » 16年前


>どのように記述するのが一番なんでしょうか?

 普通に
[color=#d0d0ff" face="monospace]
template<class T>
struct X
{
T val;
};
[/color]

 でいいと思います。


 typedefを使うなら
[color=#d0d0ff" face="monospace]
typedef X<int> int_X;
typedef X<float> float_X;
[/color]

こういう風に型を決めて使えばいいかと。

kazuoni

Re:typedefテンプレート

#6

投稿記事 by kazuoni » 16年前

Justyさん、ご回答ありがとうございました。

いろいろ考えていて、なぜtypedefをつけるのかっと
よく考えていたら、必要のない構造で組むことができました。
浅はかな質問で大変申し訳ありませんでした。

今回はこれで解決とさせていただきます。

次回もよろしくお願いします。

閉鎖

“C言語何でも質問掲示板” へ戻る