2017-10-06 83 views
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}; 這是爲什麼發生?全局變量和內部類有什麼區別?

+1

請推薦這個問題的另一個標題。 –

+0

它的所有代碼在問題中。最後VS 2017.剛取代int vector [6] = {14,10,11,19,2,25}; int vector [] = {14,10,11,19,2,25};並獲得不合格的類型是不允許的。 –

+0

這是因爲類成員變量初始化與其定義非常分離。初始化發生在創建類的對象(實例)時(將它想象成構造函數中的一種隱藏初始化器)。初始化也可以由構造函數覆蓋。 –

回答

相關問題