help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Error with Cell element access


From: Justin Bare
Subject: Re: Error with Cell element access
Date: Fri, 14 Aug 2009 09:10:29 -0400 (EDT)
User-agent: SquirrelMail/1.4.8-4.fc5

Thank you so much for that fix. I don't think I would have ever figured
that out without your help.
This reaffirms my deep hate for C++.

Justin


> On Thu, Aug 13, 2009 at 4:53 PM, Justin
> Bare<address@hidden> wrote:
>> I get the error "conversion from ‘int’ to non-scalar type ‘dim_vector’
>> requested" on the line that says "cell_data(v) = var;" in the following
>> code. I have included the octave library and Cell.h.
>>
>>    Cell cell_data(dim_vector(numVars));
>>
>>
>>    for(int v = 0; v < numVars; v++){
>>      int dataLength = myData.arrayVars[names[v]][0].size();
>>
>>      NDArray var = NDArray(dim_vector(numTimeSteps, dataLength));
>>      for (int t = 0; t < numTimeSteps; t++){
>>        for(int i = 0; i < dataLength; i++){
>>          var(t, i) = myData.arrayVars[names[v]][t][i];
>>
>>        }
>>      }
>>      cell_data(v) = var;
>>    }
>>
>>
>> Any ideas?
>> --
>>
>
> First of all, it would help a little if you always reduced your code
> to as much self-contained example as possible, i.e. declare variables,
> remove code not necessary to trigger the bug etc.
>
> This is a very subtle problem in C++ syntax you're hitting. The statement
>
> Cell cell_data(dim_vector(numVars));
>
> is actually treated as a function prototype declaration (!)
>
> Cell cell_data(dim_vector numVars);
>
> because the parentheses can be discarded in this case. I can't quote
> the standard now, but I've hit this several times before.
> Either of the following should work:
>
> Cell cell_data((dim_vector(numVars))); // extra parens
>
> Cell cell_data = Cell(dim_vector numVars);
>
> Cell cell_data (dim_vector (numVars, 1));
>
> Cell cell_data (numVars, 1);
>
> regards
>
> --
> RNDr. Jaroslav Hajek
> computing expert & GNU Octave developer
> Aeronautical Research and Test Institute (VZLU)
> Prague, Czech Republic
> url: www.highegg.matfyz.cz
>


-- 

Justin Bare
Robotic Research, LLC.
814 West Diamond Ave, Suite 301
Gaithersburg, MD 20878
240-631-0008 Ext 246


reply via email to

[Prev in Thread] Current Thread [Next in Thread]