none
關於 C++/CLI 泛型的問題 RRS feed

  • 問題

  •  各位大大好, 以下是 ref class CTest 的定義

    generic<class T>
    ref class CTest
    {
    public:
    	CTest(void) {};
    	virtual ~CTest(void) {};
    	void AddTest(T test)
            {
                _tests[0] = test;
            };
    	void RemoveTest(T test)
            {
                _test[0] = nullptr; // 問題 1
            };
    
    private:
    	array<T>^ _tests;    // 問題 2
    
    };

    問題 1 :

    compile error , 無法由 nullptr 轉換為 T,

    是否有類似 C# 的 default(T) 可以指定為 null ?

    問題 2 :

    改成 array<T^> ^ _tests; 就 compile error, 不允許在泛型型別參數上間接取值

    我在 MSDN 或網路上看到的 sample , T 都是以 int , double 或是內含一個 List/Vector 為例子,

    不知道有沒有以 ref class 做為 T 的 type, 然後有把 T 的變數設為 null 的範例可供參考?

    謝謝


    2012年10月22日 上午 10:34

解答

  • C#的default(T)在C++/CLI請用T(), 另外泛型參數的型態如果不是指標就無法間接取值
    • 已標示為解答 LonghairPan 2012年11月5日 上午 03:46
    2012年10月23日 下午 12:21