Is it possible to handle situations where static cast fails. I have a sample code written belo:
typedef struct test {
int a;
int b;
} tester;
void setevent(void *in) {
tester *recv = static_cast<tester*>(in);
[Code] ....
In above code when setevent is called with the tester object, there is no issue, but if we pass random value it leads to seg fault. This is because static_cast is not type_safe, but can it be handled in any other way?
I have an application that uses an array of threads to call a method along with thread.join(). I was just wondering what would be the best way to handle the thread in case if one of the thread fails? Should I put a try catch block on the method that is being called or should I put the try catch block on the array of threads, or is there any other proper way to handle failed threads?
A static function can be called in relation to a particular object by a statement such as the following:
aBox.Afunction(10);
The function has no access to the non-static members of aBox. The same function could also be called without reference to an object. In this case, the statement would be:
CBox::Afunction(10);
where CBox is the class name. Using the class name and the scope resolution operator tells the compiler to which class Afunction() belongs."
What are the workarounds for accessing the non-static member variables of some class(Say A) inside static member functions of another class(Say B)? I am coding in c++. Class A is derived with public properties of class B. Any pointers?
1. Is that mean that Do() is only available for use by Dog itself because Dog is 'oryginal' Dog, and if i create new dogs - instances of oryginal Dog (dog1, dog2 ...) they cant access because Do is only available fo 'oryginal' one? Is that correct thinking?
2. If i would want to have something common (e.g value) for all dogs is that good way to create static field/method for Dog instead of non-static once then all instances of Dog would access Dog static member to get/change it? Just stupid example: static method GetAmountOfLegs() which return 4 Then all instances can take/call that value from Dog. Is that correct thinking?
Is it possible to get the string representation of an int. So I mean if i have: 5, I want to get '5'.
I was searching in the internet and I found this solution:
Code: int number = 5; char c = number + '0'; which works fine for small numbers, but if I do: Code: int i; char c; for(i =0; i < 10000; i++) { c = i + '0'; printf("%c ", c); }
At some point some strange sings like %&/)/)$%&) are appearing, But i really need this huge numbers as well .. Is there any other way to do this??
In my refference book I have got a example with a part saying to access the a[4][0] element of the array (named a) with pointer this can be written:
*((int*)a+4)
I wonder if the cast is really required. The book says it is required so that the pointer arithmetic can be done properly. However I am not sure about it. When I work with pointers defined by myself I don't use casts similar to this one. Is there a difference between a self defined pointer and array name?
I am writing a program with FLTK and in event handling part wanted to send the address of the handler function to callback function. Type cast just does not work.
I want to cast "a pointer to a class member function which accepts one argument" to a void pointer. After all it is just an address. So it is logically possible to cast it. Isn't it? Actually an static_cast should be enough!
I cannot get the following to compile. The problem is the printf on the last line. I understand that printf requires a char (or pointer to char). I understand that I can convert between datatypes by putting the target data type in parenthises in front of the variable. But how do I cast the integer into a character and then get it's pointer to pass into printf?
Following is my code. I compile with gcc temp.c -o temp.
Note that I have tried many attempts at that last line and this is just the one that I really, really think should work (or is at least the closest to the correct answer).
This code shown below, using printf("%s", &(char)nextChar); returns
temp.c:26: error: lvalue required as unary '&' operand
If I try to use printf("%s", *(char)nextChar); I get the error
temp.c:26: error: invalid type argument of 'unary *' (have 'int')
This line printf("%s", (char)nextChar); returns the obvious
format '%s' expects type 'char *', but argument 2 has type 'int'
Code:
#include <stdio.h> int main() { printf("hello, world "); #if defined(SUNDIALS_EXTENDED_PRECISION)
This works, but I thought it was good practice for type safety to use C++ style casting, yet reinterpret_cast does not work in this instance as it fails:
ERROR: reinterpret_cast can not cast away const or other type qualifiers
and const_cast fails with:
ERROR: a const_cast can only adjust type qualifiers, it cannot change the underlying type
So what is the correct method of casting here assuming I can not change the library interface, and my data is kept in an std::string?
I've got two classes, which are both derived from the same two base classes. Here's a representation of the actual code:
Code: #include <vector> class BaseClassA { }; class BaseClassB { }; class TestClassX : public BaseClassA, public BaseClassB
[code].....
Basically, I'd like to know if it is possible to cast directly from a BaseClassA pointer to a BaseClassB pointer, without casting to the child class first.
I programming currently something with OpenGL. Now I have written some wrapper classes, like Shader, Program .... All works fine, but I don't like to call Shader.GetHandle() every time I want to call a OpenGL function manually where I need the object handle/id. (GetHandle() returns the OpenGL ID of the object)
So now I wonder, is it possible to program it in C++ so, that I can put my objects to gl methods and c++ automatically pass the handle/id member to that function ? Is there maybe a operator that I can use for that?