按类访问的C ++原始数组

时间:2017-07-06 17:07:52

标签: c++ class indexing

我想使用类访问基本类型数组。 我正在使用Visual C ++ 2013

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中是否可以这样?

2 个答案:

答案 0 :(得分:1)

我怀疑你有错误,不是因为你的班级,而是因为你在做数组作业。您必须在函数中执行数组赋值:(这应该有效,假设您正确地重载了​​转换运算符)

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

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

答案 1 :(得分: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;
}