
エラーメッセージ
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アプリケーションのDLLファイル...
-
<unistd.h>をVisualStudioでつ...
-
Linux(g++)とAIX(XL C++)の挙動...
-
VC++6.0 で使用可能な、"Platfo...
-
リムーバブルディスクをPCへ挿...
-
CLRアプリと通常のアプリとの違い
-
C言語で作ったらWindowsでもMac...
-
math.hに含まれる関数が使えない
-
すべてのリビルド: 0 正常、 0 ...
-
cygwinのgccで正常にコンパイル...
-
#If True Then の # って何??
-
VS2010環境で2点ほど質問
-
パソコンソフトを作るには?
-
python エラー
-
vb2010にてASPWEBシステムを作...
-
[c++] <pthread.h>がinclude で...
-
リンカのエラー
-
コールバック関数指定時のエラー
-
” OS ビルド ” の意味が分か...
-
visual C++ でビルドの中止がで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
共有ライブラリの内容確認について
-
64ビットのlinuxで32ビットメモ...
-
プレコンパイルの意味を教えて...
-
math.hに含まれる関数が使えない
-
c言語です コンパイルした時に...
-
ビープ音が鳴りません・・・
-
C言語で、配列を使ったsinカー...
-
Cのコンパイルでコメントアウト...
-
すべてのリビルド: 0 正常、 0 ...
-
MVSマシンで0C7でABENDしたので...
-
Delphiでクラスをオブジェクト...
-
#If VBA7 Thenに関して
-
DLLは解読可能ですか
-
C#で char型とstring型の比較で...
-
[COBOL] ソースの復帰
-
gcc バージョン違いによるコン...
-
gccでc++プログラムをコンパイ...
-
シリアル通信の受信待ちについて
おすすめ情報