2017-07-06 95 views
-2

我想使用類訪問基元類型數組。 我使用Visual C++ 2013通過類訪問C++基元數組

class CInt 
{ 
public: 
    CInt() { val_ = 0; } 
    CInt(int x) { val_ = x; } 

private: 
    int val_; 
}; 

int arr[2]; 
CInt index; 

arr[index] = 2; // ERROR! 

我試圖重載的size_t()操作,但仍然無法正常工作。 在C++/C++ 11中有這種可能嗎?

+3

您是否想將您的類對象用作索引?爲什麼? –

+4

'CInt'類背後的目的是什麼?它應該解決什麼問題? –

+0

至於你的問題*你是如何實現'int'或'size_t'運算符的?你能否請嘗試創建一個[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)向我們展示?在將MCVE添加到您的問題時,也包括可能出現的錯誤。 –

回答

1

我懷疑你有一個錯誤,不是因爲你的類,而是你在做數組任務。你必須做一個函數中的數組賦值:(這應該工作,假設你正確重載轉換運算符)

arr[index] = 2; // ERROR! <-- you can't do this outside a function 

int main() { 
    arr[index] = 2; // <-- must be within a function 
1

你是怎麼做的size_t()運算符重載?以下作品適用於我:

#include <iostream> 

class CInt 
{ 
public: 
    CInt() { val_ = 0; } 
    CInt(int x) { val_ = x; } 

    operator size_t() const { return val_; } 

private: 
    int val_; 
}; 

int main() { 
    int arr[2]; 
    CInt index; 

    arr[index] = 2; 

    // output: 2 
    std::cout << arr[index] << std::endl; 
} 
+0

好吧,我的錯誤呢!對於不完整的問題/錯誤報告也抱歉。 – codder