| | thread class for legOS
|
|
I write a Thread class for LegOs with a simple interface like in Java or CommonC++. I'm using LegOs 0.2.4. Below are my work till yet. The problem is in the Method Start(). The line is marked with !!. The error message is at the end of the file. I (...) (23 years ago, 18-Jan-02, to lugnet.robotics.rcx.legos)
|
|
| | Re: thread class for legOS
|
|
(...) IRC, every method in C++ has an implicit parameter wich is the object itself; that's why you can't cast it. Try the following (does someone have a nicer solution?): Put runWrapper() outside the class: int runWrapper(int, char **th) { (...) (23 years ago, 18-Jan-02, to lugnet.robotics.rcx.legos)
|
|
| | Re: thread class for legOS
|
|
(...) Haven't done any C++ for a while, but IIRC you just need to declare runWrapper as static, ie: private: static int runWrapper(...) ; HTH ROSCO (23 years ago, 21-Jan-02, to lugnet.robotics.rcx.legos)
|
|
| | Re: thread class for legOS
|
|
(...) No, static doesn't matter but it is possible the calling conventions of C and C++ might be different (I don't know of a platform where that is the case for a an extern function), so you might need to specify C linkage, as in: extern "C" int (...) (23 years ago, 21-Jan-02, to lugnet.robotics.rcx.legos)
|
|
| | Re: thread class for legOS
|
|
(...) Static DOES matter; it declares the method as being a "class" method, rather than a normal instance method. I believe there is no implicit 'this' parameter and therefore it can be treated like a normal function. Of course, it can't be linked (...) (23 years ago, 21-Jan-02, to lugnet.robotics.rcx.legos)
|
|
| | Re: thread class for legOS
|
|
(...) Unless you define a function as a member function, there is no this parameter at all. In the example given, it was not a member function at all (nor should it be). I believe you are thinking of a static member function vs. a non-static member (...) (23 years ago, 21-Jan-02, to lugnet.robotics.rcx.legos)
|
|
| | Re: thread class for legOS
|
|
(...) In fact, neither of these suggestions will work with the code as it stands, because the runWrapper() function tries to call the Run() function, which is a non-static member function. You could pass a pointer to the class instance (this) in the (...) (23 years ago, 21-Jan-02, to lugnet.robotics.rcx.legos)
|
|
| | Re: thread class for legOS
|
|
(...) In the post you replied to saying "static doesn't matter", the proposal was: private: static int runWrapper(...) ; I then replied to your post, etc. Anyway, let's not degenerate into he-said-she-said. We're really just talking past each other (...) (23 years ago, 22-Jan-02, to lugnet.robotics.rcx.legos)
|