###前提・実現したいこと
関数を利用して動的に宣言したグローバル変数(?)を配列の要素数として配列を宣言し、関数に渡したい。
###発生している問題・エラーメッセージ
二次元以上の配列だとうまく機能していないことが明らかになる。
No matching function for call to 'test2'
No matching function for call to 'test4'
これをコンパイルしようとしてみると
Candidate function not viable:no known conversion from 'char[Num][Num]'to 'char(*)[Num]'for 1st argument
Candidate function not viable:no known conversion from 'char[dNum][dNum]'to 'char(*)[dNum]'for 1st argument
このようなエラーを吐きます。
###ソースコード
C++
1#include <iostream> 2using namespace std; 3const int N=7; 4int fact(int n) 5{ 6 int all_hs=1; 7 for(int i=1;i<=n;i++){ 8 all_hs=all_hs*i; 9 } 10 return all_hs; 11} 12const int Num=fact(N-3);//4*3*2*1=24; 13#define dNum fact(N-3)//4*3*2*1=24; 14 15void test1(char t[Num]){} 16void test2(char t[][Num]){} 17void test3(char t[24][24]){} 18void test4(char t[dNum][dNum]){} 19int main() { 20 char t_1[Num]; 21 char t_2[Num][Num]; 22 char t_3[24][24]; 23 char t_4[dNum][dNum]; 24 test1(t_1); 25 test2(t_2);//No matching function for call to 'test2' 26 test3(t_3); 27 test4(t_4);//No matching function for call to 'test4' 28} 29
###補足情報(言語/FW/ツール等のバージョンなど)
コンパイラ(?)厳密には違うらしいんですが・・・
XcodeにプリインストールされていたGCCの一種だと思うのですがApple LLVM7.0です。
なんとなく計算されるタイミングとかが関係あるのかなと思うんですが、理解が甘く良くわかっておりません。
正確な理解と、具体的な解決策が見つかったらと思っています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/24 11:20
2015/12/24 13:33