help-octave
[Top][All Lists]
Advanced

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

Re: Built-in Functions inside method of a class


From: Juan Pablo Carbajal
Subject: Re: Built-in Functions inside method of a class
Date: Mon, 10 Oct 2011 09:04:04 +0200

On Sun, Oct 9, 2011 at 5:30 AM, Juan Pablo Carbajal <address@hidden> wrote:
> Hi,
>
> Are built in functions called inside a method of a class considered as
> friends (as in C++) of that class?
> In other words: Will the function be evaluated in the context of the
> caller or in the context of the method.
>
> I have a class with a field 'Path' that is a structure with many
> fields inside. I have a method that is meant to return a cell
> containing information inside those subfields. The following code
> works correctly
>
> wanted_ids = {ids{tf}};
> for i = 1: numel (wanted_ids)
>     paths{i} = obj.Path.(ids{i}).data;
> end
>
> by returning the cell with the contents of the subfields of Path
> described in 'wanted_ids'.
>
> However any of the following doesn't work
> % Variation
> paths = cellfun (@(s) obj.Path.(s).data,wanted_ids,'UniformOutput',false);
> % Another variation
> paths = cellfun (@(s) getfield (obj,'Path').(s).data,
> wanted_ids,'UniformOutput',false);
> % Yet another
> paths = cellfun (@(s) getfield (obj.Path,s).data,
> wanted_ids,'UniformOutput',false);
> % Yet yet another
> dummy = @(s) obj.Path.(s).data;
> paths = cellfun (dummy, wanted_ids,'UniformOutput',false);
>
> The error says that the class cannot by indexed with 'Path'. If one
> manually gives this interface to the class, by defining a case in
> subref 'Path' the problem is solved. However, this breaks the privacy
> of the class field 'Path', that is not meant to be accessed directly.
>
> Is there any way of solving this without making Path public?
> Equivalently, can one define functions "friend" of a class?
>
> Thanks
>
> --
> M. Sc. Juan Pablo Carbajal
> -----
> PhD Student
> University of Zürich
> http://ailab.ifi.uzh.ch/carbajal/
>

Hi, I am pinging this question.
In case you have a quick answer, I am at the IRC channel #octave, nick KaKiLa

Thanks!


-- 
M. Sc. Juan Pablo Carbajal
-----
PhD Student
University of Zürich
http://ailab.ifi.uzh.ch/carbajal/


reply via email to

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