これは子供の質問だと思いますが、解決方法に関する情報が見つかりません。
//*.h:
class Foo
{
#if defined(RedefChallangesCount)
static const mainDataType ChallangesCount = 500;
#undef RedefChallangesCount
#else
static const mainDataType ChallangesCount = 1;
#endif
...
int _correctAnswers[ChallangesCount];
....
}
私のVSテストクラスでは:
#include "stdafx.h"
#include "CppUnitTest.h"
#define RedefChallangesCount
#include "..\Core\ChallengeManager.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
using namespace Brans;
namespace CoreTests
{
TEST_CLASS(SomeTestClass)
{
public:
TEST_METHOD(SomeTestMethod)
{
Foo* cm = new Foo();
cm->Method();
...
delete cm;
}
}
}
私はドキュメントのようにすべてのように思えますが、#define RedefChallangesCount 行でテストを実行すると、「アクセス違反の読み取り場所」などの奇妙なエラーが発生し、配列 _correctAnswers が正しくない場合があります。同時に、ChallangesCount が予想どおり 500 であることがわかります。#define RedefChallangesCount 行にコメントすると、すべてのエラーがなくなりました...何が問題なのですか?