
エラーメッセージ
too few template-parameter-lists
→私的には、templateへのパラメータが少なすぎる
と理解しているのですが。。。
コード的にには、以下の通りです。
hoge.hh
template<class T> myclass2
{
public
myclass1* piyo;
:
:
}
hoge.ccにて
myclass1* myclass2<myclass3>:piyo; →ここで上記のエラー
別のヘッダにて
class myclass3 : public myclass1<myclass3>
{
:
:
}
という感じでコーディングしてます。
gcc3.2.2でのコンパイルでは、問題なくコンパイルでき
実行もできます。
ですが、gcc3.4.2を使用するとコンパイルエラーが出てしまいます。
このエラーの回避方法をご存知の方いらっしゃいましたら
御教授願えませんでしょうか
よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
ご質問の内容は、「テンプレートの明示的特殊化」の
ケースに当たります。
したがって、次のようにすればコンパイルが通ります。(piyoは勝手に静的クラスメンバだと解釈しました)
class myclass1; // forward declaration
class myclass3; // same as above
template <class T>
class myclass2
{
public:
static myclass1* piyo;
};
template<>
myclass1* myclass2<myclass3>::piyo;
御回答ありがとうございます。
御教授頂いたtemplateのエラー回避策は、GCC3.2.3でのGCCのupdateに
伴う回避策ですよね。。。
→GCCのメーリングリストで読みました。
私もこれを試してみたんですが、エラーとしては
変化なしです。
No.3
- 回答日時:
gcc-3.4.x以降は、テンプレートの扱いがより厳密になったので、以前コンパイルできていたものができなくなることが多々あります。
いずれにしても、実際に状況が再現する正確なコードがないと、正確なことはいえません。
No.2
- 回答日時:
テンプレートに関して、
VC7ではコンパイルがとおり、VC6では通らない
という経験をしたことがあります。
コンパイラによっては、仕様どおりの実装ができていないこともあるようですので、
コンパイラのバグと言うことも考えられないかなぁと思います。
No.1
- 回答日時:
よくわかりませんが、
> class myclass3 : public myclass1<myclass3>
の部分を見る限りでは、myclass1にはテンプレート引数が必要かと思います。
テンプレートの時点ではmyclass1は仮の名前だったのが、テンプレートが具現化した時点で、その素性がはっきりしたためにエラーになったのだと思います。
ところで、piyoは静的データメンバの間違いでしょうか?
この回答への補足
御回答ありがとうございます。
すみません。piyoは正確には
static myclass1* piyo;
です。
その後の状況ですが、上記コードでVCでも
コンパイルできました。
やはり、GCC3.4.2だけ通りません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- 英語 節を列挙する例示表現について 2 2022/08/15 13:52
- 英語 ( )に入る単語について John forgot to bring his credit card, 1 2022/04/10 21:07
- Visual Basic(VBA) 【VBA】ボタンに登録したマクロがエラーになる 4 2022/07/25 17:47
- 英語 ()内に入るのはどれですか? 高校の授業で出された問題です。 [1]The cake is cove 3 2022/12/13 22:40
- 英語 英語ができる方に質問です。 以下の文がネイティブの方に伝わるかどうかを確認していただけないでしょうか 7 2022/12/16 14:54
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- 英語 間違っていたら教えてください! Going abroad has changed my life. 2 2023/06/04 19:06
- Visual Basic(VBA) エクセルVBAで以下のようなコードを書いたらエラーになりました。何処が間違っているの教えて? 1 2023/02/10 18:30
- 英語 She talked to me ( ) she were my teacher. ①as if ② 2 2022/04/30 23:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実行後にコンパイルに失敗しま...
-
<unistd.h>をVisualStudioでつ...
-
VBの参照設定について
-
アプリケーションのDLLファイル...
-
Delphiでクラスをオブジェクト...
-
不明なプラグマ・・・?
-
#ifdef の使い方
-
「逆コンパイル」ってできるん...
-
VBでUnicodeの記号を表示する方法
-
同じEXE・同じファイルで解析結...
-
return (0)の括弧は何故付ける
-
C90とC99の計算結果の違い?
-
コンパイル時に「out of memory...
-
ARDUINO <MsTimer2.h> にわかに...
-
CLRアプリと通常のアプリとの違い
-
Fortran77 (intel fortran)
-
C言語で作ったらWindowsでもMac...
-
ビープ音が鳴りません・・・
-
fatal error LNK1112
-
<math.h>ヘッダを入力している...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
実行後にコンパイルに失敗しま...
-
math.hに含まれる関数が使えない
-
シリアル通信の受信待ちについて
-
ビープ音が鳴りません・・・
-
C#で char型とstring型の比較で...
-
c言語です コンパイルした時に...
-
共有ライブラリの内容確認について
-
すべてのリビルド: 0 正常、 0 ...
-
64ビットのlinuxで32ビットメモ...
-
C言語で作ったらWindowsでもMac...
-
MS-BASICの逆コンパイルについて
-
<math.h>ヘッダを入力している...
-
ヘッダーファイル『windows.h』...
-
プレコンパイルの意味を教えて...
-
Verilog_HDLでのdefineとifdef
-
[COBOL] ソースの復帰
-
gcc バージョン違いによるコン...
-
同じEXE・同じファイルで解析結...
おすすめ情報