質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

870閲覧

C++で子クラスのテンプレート引数を親クラスに適用する方法

yussanstar

総合スコア15

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

1グッド

0クリップ

投稿2021/07/24 14:23

環境

・Visual Studio 2019
・C++

質問内容

C++で子クラスのテンプレート引数を親クラスに適用する方法についてお聞きしたいです。
以下のコードのように、Temp2にテンプレート引数で渡した値Cを、
親クラスであるTemp1のテンプレート引数に渡そうとしています。

C++

1template<int A, int B> 2class Temp1 3{ 4public: 5 void func1() 6 { 7 printf("testA : %d\n", A); 8 printf("testB : %d\n", B); 9 } 10}; 11 12template<int C> 13class Temp2 : public Temp1<5, C> //★子クラスのテンプレート引数を親クラスに適用 14{ 15public: 16 void func2() 17 { 18 func1(); 19 printf("testC : %d\n", C); 20 } 21}; 22 23int main() 24{ 25 Temp2<15> t2; 26 t2.func2(); 27}

ですが、この場合、func2()実装中のfunc1()を読んでいる行で

'func1': 識別子が見つかりませんでした

というコンパイルエラーが出てしまいます。
★の行を、

C++

1template<int C> 2class Temp2 : public Temp1<5, 10>

などと書くと、コンパイルも通り、問題なく動作しています。
出力結果は以下の通りです。

C++

1testA : 5 2testB : 10 3testC : 15

今回のように、子クラスのテンプレート引数を親クラスのテンプレート引数に使うことは不可能なのでしょうか?
解決方法や代案などお分かりになる方がいらっしゃれば、お教え頂ければ幸いです。
よろしくお願いいたします。

Serbonis👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2021/07/24 14:47 編集

再現しません。問題なくコンパイル/実行できました。 Win10 + Visual Studio 2019 (16.10.3 64-bit compile)
yussanstar

2021/07/24 15:03

早速のご回答ありがとうございます。 なるほど、通常再現しないのものなのですね。。 自分のほうでも、Win10 + Visual Studio 2019 (16.10.4 64-bit compile) ですが、依然としてコンパイルエラーが出てしまっています。 調査進めようと思いますが、見直したほうがいい場所など、 何かお心当たりありましたらお教えいただければ幸いです。 よろしくお願いいたします。
guest

回答1

0

ベストアンサー

これですか

this->func1();Temp1<5,C>::func1();で解決します

投稿2021/07/24 15:40

編集2021/07/24 15:40
youp

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yussanstar

2021/07/24 15:58

ありがとうございます・・・! お教えいただいた方法で解決いたしました。 解決ページも添付いただき大変助かりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問