c++
1 void SetFuncDatas(StateMachineData<T> datas[]) 2 { 3 DataNum = std::size(datas); 4 StateMachineDatas.resize(DataNum); 5 6 for (int i = 0; i < DataNum; i++) 7 { 8 StateMachineDatas.push_back(&datas[i]); 9 } 10 }
上記build時に 'size': 一致するオーバーロードされた関数が見つかりませんでした。
というエラーログが発生します。
SetFuncDatasメソッド内のDataNum = std::size(datas);をコメントアウトして
c++
1 void a() 2 { 3 StateMachine<A> s; 4 5 StateMachineData<A> x[] = { {&A::Enter, &A::Tick, &A::Exit} , 6 {&A::Enter, &A::Tick, &A::Exit} }; 7 std::size(x); 8 s.SetFuncDatas(x); 9 10 }
SetFuncDatasの呼び出し元で引数配列をstd::sizeの引数として呼び出したところエラーは発生しませんでした。
使用している配列、関数(std::size)は同じなのにエラーが出るときとエラーが出ないときがあるのはなぜなのでしょうか?
回答2件
あなたの回答
tips
プレビュー