[aspectc-user] adding variables and using them

Jamal Siadat siadat at cpsc.ucalgary.ca
Sat Jul 16 00:35:11 CEST 2005


Hi, Thanks for the information but I'm still having segmentation fault.
I'm using the following files:

"A.h"
class A {
 public:
    A(int x);
    int r (int x);
  int j;
  int a(const char *name, float b);
 private:
  int p;
};

"A.cc"

A::A(int x) {j=x; }

int A::a( const char *name, float b) {

   int jam=7;
 printf("inside A::a( %f)\n",  b);


return jam;}

int main (){
 A b(5);
 b.a("jam",2);
 return 0;}

and the aspect asp.ah is defined below with tjp->that()->abc=0 ( I also
used tjp->target()->abc=0. If I delete the construction advice it would go
away but it has a seg fault in this condition.. anyway to get around it?
Thanks again :)
P.S: could it be because the constructor takes a parameter?


>> and second, would the following make any sense? I'm trying to add the
>> variable that I just created for the class to the constructor. I know it
>> wouldnt allow me to touch the constructor using regular advices so I'm
>> wondering if this would work( although the compiler is complaining and
>> gicing segmentaion faults)
>>
>> aspect asp :public A {
>> public:
>> asp(int ix):A(ix){} //assume A(int x) is constructor
>>
>> pointcut calls()=  "A" ;
>> advice calls() : void initialize () {p=0;j=0;}
>> advice calls(): int abc;
>> advice construction (calls()) :before(){ abc=0;}
>> static asp* aspectof() {
>>   static asp asp_instance(5);
>>
>>   return &asp_instance;
>> }};
>
>
> I think that should work, but again you have to use 'tjp->that()->abc
> = 0' instead of 'abc = 0'. In fact this quite common: insert a
> variable via an introduction and initialize it via
> construction-advice.
>
>> Thanks again Fabian,
>>
>> Promise not to bother you as often :)
>
> No problem, I hope I was able to help you, but please always reply to
> the mailing list, too, so all readers of the mailing list can partake
> in a particular thread.
>
> Ciao, Fabian.
>





More information about the aspectc-user mailing list