Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何创建对数组成员的引用_C++_Class - Fatal编程技术网

C++ 如何创建对数组成员的引用

C++ 如何创建对数组成员的引用,c++,class,C++,Class,如何引用类中数组的成员 比如: class ASD{ int bb[4]; int& up = bb[0] // <- error need to const int& down= bb[1] // <- samething int& right= bb[2] // <- samething int& left= bb[3] // <- samething }; class ASD{ in

如何引用类中数组的成员

比如:

class ASD{
    int bb[4];
    int& up = bb[0] // <- error need to const
    int& down= bb[1] // <- samething
    int& right= bb[2] // <- samething
    int& left= bb[3] // <- samething
};
class ASD{

    int up;  
    int down; 
    int right; 
    in& left; 
    int*& bb = &up; // <- error
};

您的代码按预期工作。好。。。与您的主要问题无关的小调整:

  • 公开成员
  • 添加
  • 由于
    ASD ASD()被解释为一个函数。使用
    ASD-ASD
    或更好的
    ASD ASD{}

  • 但我强烈建议使用较新的标准(好吧,它不再那么新了)。

    添加了缺少的
    s,它编译为clean for me g++5.1.0请注意,您在尝试复制和分配
    ASD
    的实例时会遇到进一步的问题
    error need to const
    不是任何编译器都会给出的真正错误。逐字逐句地张贴真正的错误。此外,您正在使用哪个编译器以及您传递给它的开关;你可能不告诉它使用一个新的足够的C++版本。您应该在问题中添加一个和错误消息。如果您这样做了(并修复了丢失的
    ),您可能会意识到没有:P@underscore_d为什么?你敢问我为什么要发布有用的信息,让读者除了猜测你的问题之外,还能做任何事情吗?
    class ASD{
    
        int up;  
        int down; 
        int right; 
        in& left; 
        int*& bb = &up; // <- error
    };
    
    ASD asd;
    asd.bb[1] = 20;// wich is equal to asd.down = 20
    
    class ASD
    {
    public:
        int bb[4];
        int& up = bb[0];
        int& down= bb[1];
        int& right= bb[2];
        int& left= bb[3];
    };
    
    int main()
    {
        ASD asd{};
        asd.bb[1] = 5;
    
        for(int i = 0; i < 4 ; i++){
            asd.bb[i] =i;
        }
    
        asd.left = 50;
        return 0;
    }
    
    class ASD
    {
    public:
        int bb[4];
        int& up = bb[0];
        int& down;
        int& right;
        int& left;
    
        ASD()
            : up(bb[0]),
            down(bb[1]),
            right(bb[2]),
            left(bb[3])
        {}
    
    };
    
    int main()
    {
        ASD asd;
        asd.bb[1] = 5;
    
        for(int i = 0; i < 4 ; i++){
            asd.bb[i] =i;
        }
        asd.left = 50;    
    }