This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

convert unsigned int to class pointer

Hello together,

i was trying to find out, how to cast an unsigned int to a class pointer.
I´m using a stm32 under µVision4.
I read something about reinterpret casts, and that they´re not that runtime efficient.
And i don´t see (know) the reason why i´m forced to use a function wich checks the adress if it really holds the class type; plus i´m not sure if this is even supported on the µC.
if i do it the "noobish" way tmpPtr = (myClass)adressHolder; i´m told a sufficient constructor is missing. For what information do i have to search, if i want to make up such a constructor on my own.

Backround:
I have a bunch of classes and they all have "prev" and "nxt" pointer of thier own typ to form up a list. This means i have implemented a Get-, and Set- method to access the previous and next adress holder. Since i want to use descent (don´t know if it is the correct english word), i had the idea to implement the Get, Set methods with unsigend int parameter and cast them to the type i need, when required.

Greetings,
Justus

Parents
  • So either program in C.

    Or spend some hours looking at an entry-level C++ textbook. That C++ book will quite quickly cover these issues.

    But as Hans-Bernhard Broeker said, the base form of the word "ignorant" means:
    - Lacking knowledge or awareness in general; uneducated or unsophisticated.
    - Lacking knowledge, information, or awareness about something in particular: "ignorant of astronomy".

    In this case, you are lacking knowledge of C++. So you try to bend it to write C programs when C++ has specifically added functionality for object-oriented programs.

    C++ was designed to allow C code to be compiled with a minimum of adjustments, to allow incremental move from strict C to full C++. But that doesn't mean you should write object-oriented code (which is in the C++ domain) by using C constructs like typecasting of untyped pointers etc.

    It doesn't take many hours to pick up what the important C++ additions are - but you should preferably settle for using a single base class and ignore that C++ also supports multiple inheritance. Having multiple base classes means people can't read the source code and actually understand the actual implications of call order for constructors, destructors etc.

    If you are good with C++, then there are even special books that concentrates on just describing the differences from C to C++.

Reply
  • So either program in C.

    Or spend some hours looking at an entry-level C++ textbook. That C++ book will quite quickly cover these issues.

    But as Hans-Bernhard Broeker said, the base form of the word "ignorant" means:
    - Lacking knowledge or awareness in general; uneducated or unsophisticated.
    - Lacking knowledge, information, or awareness about something in particular: "ignorant of astronomy".

    In this case, you are lacking knowledge of C++. So you try to bend it to write C programs when C++ has specifically added functionality for object-oriented programs.

    C++ was designed to allow C code to be compiled with a minimum of adjustments, to allow incremental move from strict C to full C++. But that doesn't mean you should write object-oriented code (which is in the C++ domain) by using C constructs like typecasting of untyped pointers etc.

    It doesn't take many hours to pick up what the important C++ additions are - but you should preferably settle for using a single base class and ignore that C++ also supports multiple inheritance. Having multiple base classes means people can't read the source code and actually understand the actual implications of call order for constructors, destructors etc.

    If you are good with C++, then there are even special books that concentrates on just describing the differences from C to C++.

Children
No data