【问题标题】:Expression must be a modifiable lvalue - array in structure表达式必须是可修改的左值 - 结构中的数组
【发布时间】:2013-02-09 00:08:20
【问题描述】:

我需要将两个数组(int[1024][3]int[1024][4])和一个Mat*(OpenCV 矩阵)传递给回调函数。
我有这样的结构:

 struct data_holder {
     Mat* mat;
     unsigned int* data[4];
     unsigned int* tara[3];
     //unsigned int tara[1024][3];  //Previous attempt
     //unsigned int data[1024][4];  
 }

这是我的任务:

 Opencv_Button pokus = Opencv_Button(20,40,50,20);  //Creating button class instance
 pokus.val("Tara");  //Button title
 ui.addButton(&pokus);  //Adding button to UI
 data_holder but_data; //structure
 but_data.data = &data;  //!!Expression must be a modifiable lvalue!!
 but_data.tara = &tara;  //For unsigned int data[1024][4] in structure I did ... = data
 but_data.mat = &UI_tara;//Matrix assigned with no problems
 pokus.setCallback(taraButtonCallback, (void*)&but_data);

那么如何将两个数组和那个 Mat 对象传递给回调函数呢?

【问题讨论】:

    标签: c++ pointers multidimensional-array struct callback


    【解决方案1】:

    这个:

    unsigned int* data[4];
    

    是一个指针数组。数组不可赋值。

    假设RHS的类型是int [1024][4],那么我有一种感觉,你真的想要这个:

    unsigned int (*data)[1024][4];
    

    【讨论】:

    • 事实上,我认为他们想要unsigned int (*data)[1024][4];。他们被“数组不是指针”的困惑所困扰。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 2014-12-15
    • 2014-12-20
    相关资源
    最近更新 更多