2017-03-25 10 views
1

私のクラスはサイズがパラメータ化されています。そのメソッドの1つでは、一時的な配列を作成する必要がありますが、クラスのサイズテンプレートをメンバ関数に渡す方法がわかりません。これは私が試した方法です:メンバ関数でクラステンプレートを使用できますか?

#include <array> 

template<unsigned int N> 
class MyClass{ 
    std::array<int,N> m_data; 
    public:  
    void myFunc(){ 
     std::array<int,N> tempArray; 
    } 
}; 


int main(){ 
    MyClass<5> obj; 
    obj.myFunc(); 
} 

編集: ビルドログ:

C:\Windows\system32\cmd.exe /C ""C:/Program Files/mingw-w64/x86_64-6.3.0-win32-seh-rt_v5-rev1/mingw64/bin/mingw32-make.exe" -j6 SHELL=cmd.exe -e -f Makefile" 
"----------Building project:[ hatizsak_konyv - Debug ]----------" 
mingw32-make.exe[1]: Entering directory 'E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv' 
"C:/Program Files/mingw-w64/x86_64-6.3.0-win32-seh-rt_v5-rev1/mingw64/bin/g++.exe" -c "E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv/main.cpp" -g -O0 -Wall -o ./Debug/main.cpp.o -I. -I. 
E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv/main.cpp: In instantiation of 'void MyClass<N>::myFunc() [with unsigned int N = 5u]': 
E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv/main.cpp:15:16: required from here 
E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv/main.cpp:8:27: warning: unused variable 'tempArray' [-Wunused-variable] 
     std::array<int,N> tempArray; 
          ^~~~~~~~~ 
"C:/Program Files/mingw-w64/x86_64-6.3.0-win32-seh-rt_v5-rev1/mingw64/bin/g++.exe" -o ./Debug/hatizsak_konyv @"hatizsak_konyv.txt" -L. 
mingw32-make.exe[1]: Leaving directory 'E:/progi/c++/CodeLite/Other/algoritmusok/dinamikus_programozas/hatizsak_konyv' 
====1 errors, 1 warnings==== 
+1

あなたの質問は何ですか? –

+0

このコードは機能せず、修正できません。 –

+1

テンプレートパラメータは、メソッド定義の内部に表示され、そのコードはそのまま動作します。どうしたの?どのようなエラーメッセージが表示されますか? –

答えて

3

テンプレートパラメータがテンプレートクラスの可視内部メソッドです。コードは正しいです。

エラーはありません。また、提供されたコード例やビルドログには何もありません。ビルドログ内のメッセージは、コマンド行で指定された-Wallオプションのように、その変数が使用されていないという事実を正しく警告する警告(コンテキストを提供する前の行)です。それ以外のコードcompiles fineは、ideoneと私のマシンの両方にあります(ここでは全く同じ警告、エラーではありません)。

[[email protected] /tmp]$ g++ -Wall -Wextra -std=c++11 stuff.cpp 
stuff.cpp: In instantiation of ‘void MyClass<N>::myFunc() [with unsigned int N = 5u]’: 
stuff.cpp:15:16: required from here 
stuff.cpp:8:27: warning: unused variable ‘tempArray’ [-Wunused-variable] 
     std::array<int,N> tempArray; 
          ^~~~~~~~~ 

ビルドログの最後に表示される「1エラー」メッセージは、CodeLiteがコンパイラの出力を誤解しているだけです。 an open bug about itがあり、あなたの条件に似ています。

関連する問題