teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

ソース記載

2019/12/25 12:13

投稿

J-GUN
J-GUN

スコア24

title CHANGED
File without changes
body CHANGED
@@ -13,4 +13,81 @@
13
13
  ここで疑問なのがこの<int>にはどういう役割や効果があるのか、という点です。
14
14
  キャストでもなさそうですし・・・今まで関数名の後ろにつけるといった書き方をしたことがありません。
15
15
 
16
- お分かりになる方がいらっしゃいましたら教えていただけると助かります。
16
+ お分かりになる方がいらっしゃいましたら教えていただけると助かります。
17
+
18
+ 追記
19
+ 本題とは直接関係ないかと思いソースを省略しましたが記載しました。
20
+ 環境はSaito Atsushiさんがおっしゃる通りVisual Studio 2015 for Windows DesktopでMicrosoft::VisualStudio::CppUnitTestFrameworkを使用しています。
21
+
22
+ ```C++
23
+ class ClassA{
24
+ public:
25
+ double dArray[RAW][COL];
26
+ unsigned short usArray[RAW][COL];
27
+ double dVal;
28
+ unsigned short usVal;
29
+
30
+ public:
31
+ Reset();
32
+ };
33
+
34
+ ```
35
+
36
+ ```C++
37
+ namespace TestClassA{
38
+ TEST_CLASS(TestClassAReset){
39
+ public:
40
+ TEST_METHOD(Reset_dArray)
41
+ TEST_METHOD(Reset_usArray)
42
+ TEST_METHOD(Reset_dVal)
43
+ TEST_METHOD(Reset_usVal)
44
+
45
+ private:
46
+ template <typename T> void TestArrayReset(T* arr, int raw, int col);
47
+ template <typename T> void TestArrayMatch(T* arr, int raw, int col, T compVal);
48
+ template <typename T> void TestValReset(T val);
49
+ template <typename T> void TestValMatch(T val, T comVal);
50
+
51
+ private:
52
+ ClassA* m_cl;
53
+ };
54
+ }
55
+ ```
56
+
57
+ ```C++
58
+ void TestClassAReset::Reset_dArray(){
59
+ m_cl = new ClassA();
60
+ TestArrayReset(&m_cl->dArray[0][0], RAW, COL);
61
+ delete m_cl;
62
+ }
63
+
64
+ void TestClassAReset::Reset_dVal(){
65
+ // new, delete省略
66
+ TestArrayVal(&m_cl->dVal);
67
+ }
68
+ // Reset_usArray, Reset_usValは引数にusArray, usValを使用すること以外は同様のため省略
69
+
70
+ template <typename T> void TestClassAReset::TestArrayReset(T* arr, int raw, int col){
71
+ // m_clの値を0以外で初期化
72
+ m_cl->Reset();
73
+ TestArrayMatch(arr, raw, col, (T)0);
74
+ }
75
+
76
+ template <typename T> void TestClassAReset::TestArrayReset(T* arr, int raw, int col, T compVal){
77
+ for(int i = 0; i < RAW; i++){
78
+ for(int j = 0; j < COL; j++){
79
+ Assert::AreEqual(comVal, arr[i*COL + j]); // エラーになる
80
+ }
81
+ }
82
+ }
83
+
84
+ template <typename T> void TestClassAReset::TestValReset(T val){
85
+ // m_clの値を0以外で初期化
86
+ m_cl->Reset();
87
+ TestValMatch(val, (T)0);
88
+ }
89
+
90
+ template <typename T> void TestClassAReset::TestValMath(T val, T compVal){
91
+ Assert::AreEqual(comVal, val); // エラーにならない
92
+ }
93
+ ```