1
#include "stdafx.h"
#include "CppUnitTest.h"
#include <iostream>
#include <cstdlib>
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest2
{
TEST_CLASS(UnitTest1)
{
public:
int vector [6] = { 14, 10, 11, 19, 2, 25 };
bool ArrayAreEqual;
int static compare(const void * x1, const void * x2)
{
return (*(int*)x1 - *(int*)x2);
}
TEST_METHOD(TestMethod1)
{
qsort(vector, 6, sizeof(int), compare);
for (int ix = 0; ix < 6; ix++)
std::cout << vector[ix] << " ";
// TODO: Your test code here
int TestVector[6] = { 2,10,11,14,19,25 };
if (std::equal(std::begin(vector), std::end(vector), std::begin(TestVector)))
{
ArrayAreEqual = true;
}
else
{
ArrayAreEqual = false;
}
Assert::IsTrue(ArrayAreEqual);
}
};
}
私のコードでは、int vector [6] = {14、10、11、19、2、25};要素数[6]で定義することができます(そうでなければ、不完全な型は許されません)。しかし、この変数がグローバルであれば、int vector [] = {14、10、11、19 、2,25}。 これはなぜ起こりますか?グローバル変数と内部クラスの違いは何ですか?
この質問に別のタイトルをお勧めします。 –
質問のすべてのコードです。最後のVS 2017.ちょうど置き換えられたintベクトル[6] = {14、10、11、19、2、25}; 〜int vector [] = {14,10,11,19,2,25}。非互換型を取得することはできません。 –
これは、クラスメンバ変数の初期化がその定義とは非常に異なるステップなのでです。この初期化は、クラスのオブジェクト(インスタンス)が作成されるときに発生します(コンストラクタ内の隠された初期化子とみなされます)。初期化はコンストラクタによってオーバーライドすることもできます。 –