none
C++ Metro App 里面如何定义二维数组呢? RRS feed

  • 问题

  • C++/CX 里面如何定义二维数组呢,数组里面的每个元素是一个类,

    比如说定义一个二维数组,里面的每个元素是object 类型的,该如何定义呢?

    我还不熟悉Metro 下C++的语法啊,请知道的高手指导下啊……!

    2012年9月17日 5:59

答案

  • 首先,Windows Runtime中的class 必须是sealed的,

    	public ref class Simple sealed
    	{
    	  public :
    		property int heigth;
    		property int width;
    	};

    其次,Windows Runtime 公有的成员必须是Windows Runtime 类型的,native类型只能用于私有成员

    	private:
    
    		property  std::vector< std::vector<Simple^> > vlist
    		{
    		    std::vector< std::vector<Simple^> > get()
    			{
    				return list;
    			}
    			void set(std::vector< std::vector<Simple^> > tm)
    			{
    				list = tm;
    			}
    		}


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 john ming 2012年9月21日 12:30
    2012年9月18日 7:52
    版主

全部回复

  • 你好,

    在Windows Runtime中array和vector都不支持多维数组,编译时会报错

    Vector<Vector<int>^>^ mulitearray=ref new Vector<Vector<int>^>();
    

    但是,我们可以使用std 里面的多维数组,像这样

    	 std::vector<std::vector<double> > array2D;
    
      // Set up sizes. (HEIGHT x WIDTH)
      array2D.resize(5);
      for (int i = 0; i < 5; ++i)
        array2D[i].resize(4);
    
      // Put some values in
      array2D[1][2] = 6.0;
      array2D[3][1] = 5.5;


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us

    2012年9月17日 10:35
    版主
  • public ref class Simple
    	{
    	  public :
    		property int heigth;
    		property int width;
    	};

    我想在另外一个类中定义一个二维数组的成员变量,代码如下:

     [Windows::Foundation::Metadata::WebHostHidden]
     public ref class MainPage sealed
     {
     public:
    	property  std::vector< std::vector<Simple^> > vlist
    		{
    		    std::vector< std::vector<Simple^> > get()
    			{
    				return list;
    			}
    			void set(std::vector< std::vector<Simple^> > tm)
    			{
    				list = tm;
    			}
    		}
    
    private:
    	    std::vector< std::vector<Simple^> > list;
    
    }

    但是报错,应该如何定义呢?

    2012年9月17日 14:51
  • 首先,Windows Runtime中的class 必须是sealed的,

    	public ref class Simple sealed
    	{
    	  public :
    		property int heigth;
    		property int width;
    	};

    其次,Windows Runtime 公有的成员必须是Windows Runtime 类型的,native类型只能用于私有成员

    	private:
    
    		property  std::vector< std::vector<Simple^> > vlist
    		{
    		    std::vector< std::vector<Simple^> > get()
    			{
    				return list;
    			}
    			void set(std::vector< std::vector<Simple^> > tm)
    			{
    				list = tm;
    			}
    		}


    Jesse Jiang [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 john ming 2012年9月21日 12:30
    2012年9月18日 7:52
    版主
  • vlist 如果是私有成员的话,就不能让该类的派生类,继承 vlist 二维数组。 我想要vlist 数组在派生类中可以访问到,如何实现呢? 
    2012年9月21日 12:34