__declspec プロパティを使用しようとしていますが、複数のインデックスを使用すると奇妙なエラーが発生します。Visual Studio で「式は完全なオブジェクト型へのポインターである必要があります」というエラーが表示されますが、コードは正常に実行されているようです。私が使用しているコードは次のとおりです。
#include "stdafx.h"
template<typename T>
class testClass
{
public:
__declspec (property (get = GetValue, put = PutValue))
T test[][];
T GetValue(int x, int y)
{
return _internalVal[x][y];
}
void PutValue(int x, int y, T lValue)
{
_internalVal[x][y] = lValue;
}
private:
T _internalVal[3][3];
};
int _tmain(int argc, _TCHAR* argv[])
{
testClass<int> tc;
for (int i = 0; i < 3; i++){
for (int j = 0; j < 3; j++){
tc.test[i][j] = i * j;
}
}
return 0;
}
この例では、多次元プロパティを使用するテンプレート クラスで __declspec プロパティを使用しています。括弧とパラメーターのセットを 1 つ削除すると、エラーがなくなり、コードが期待どおりに実行されるようです。コードが現在のように、Visual Studio でエラーがスローされ、引き続き実行されます。
なぜこれが懸念されるのですか?私はチームで働いており、エラーが発生した場合、他の人は満足せず、コードが機能しないと想定する可能性があります。このようなエラーを抑制する方法はありますか? なぜこうなった?