|
Specification Design Language?
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
|
It took some digging but I think they mean this.[^]
All I got a first was Security Development Lifecycle.
led mike
|
|
|
|
|
Not as far as I know. Okay, you can still do the complete code for the UI yourself but it is probably not what you are looking for.
Anyway, there is a better alternative for SDL: SFML[^]. It is quite recent (one or two years) and is a good replacement for the SDL (which offers an object-oriented architecture, instead of a C interface).
It can also be integrated with MFC, so that's probably what you are looking for. Furthermore, the performances are much better than the SDL (I can tell you from experience that SDL is quite slow).
|
|
|
|
|
Thank you very much
|
|
|
|
|
Cedric Moonen wrote: SFML[^]. It is quite recent (one or two years) and is a good replacement for the SDL (which offers an object-oriented architecture, instead of a C interface).
Good to know, thanks!
|
|
|
|
|
Dejavu nic
OK,. what country just started work for the day ? The ASP.NET forum is flooded with retarded questions. -Christian Graus
Best wishes to Rexx[^]
|
|
|
|
|
|
Hi All,
I have the following code which uses an argument list passed into a function, i get a pointer to the first argument and then set this pointer = to some modified argument. This in turn updates the arglist. See code below:
va_list arglist;
<br />
va_start(arglist,cString);<br />
<big>char **Arg1 = &va_arg( arglist, char *); </big><br />
*Arg1 = Arg1Modified;
I now have to convert this code to work after being compiled under VC 1.52. The line in bold above is the problem because in VC 1.52 you cannot declare variables on the same lin that they are used.
Does anyone know how i need to declare the variable to work the same as it does in VS 6, i have tried:
char **Arg1<br />
Arg1 = &va_arg( arglist, char *);
but this does not work correctly.
Thanks in Advance
|
|
|
|
|
KeithF wrote: ...in VC 1.52 you cannot declare variables on the same lin that they are used.
I went back and looked at some of my code from the early 90s (when v1.52c was being used). It's littered with examples to the contrary.
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Hi David,
Yes you are correct, sorry. What i meant to say is that i am using c files in VC 1.52 (maintenace project - no choice). It is with C files that this inline declaration is not allowed.
Any ideas on how to solve the problem?
|
|
|
|
|
So what does the following produce:
char **Arg1;
Arg1 = &va_arg(arglist, char *);
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
it produces this :
âg it was supposed to be 342
|
|
|
|
|
KeithF wrote: char **Arg1
Arg1 = &va_arg( arglist, char *);
Shouldn't this be
char **Arg1
*Arg1 = &va_arg( arglist, char *);
|
|
|
|
|
No, because &va_arg() returns a char ** , not a char * .
"Normal is getting dressed in clothes that you buy for work and driving through traffic in a car that you are still paying for, in order to get to the job you need to pay for the clothes and the car and the house you leave vacant all day so you can afford to live in it." - Ellen Goodman
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
va_arg is a macro and the current code is depending on an implementation specific side effect. Somewhere in the back of mind, I recall this macro changing between 16 and 32-bit. If you have a bunch of code depending on Arg1 being a pointer to a pointer, you can do the following:
<br />
char* tmpArg1;<br />
char** Arg1;<br />
<br />
tmpArg1 = va_arg( arglist, char *);<br />
Arg1 = &tmpArg1;<br />
The alternative is to bag the pointer to a pointer stuff and just use Arg1 as a char*.
Anyone who thinks he has a better idea of what's good for people than people do is a swine.
- P.J. O'Rourke
|
|
|
|
|
I have an ActiveX control and use CRectTracker in it.
when the control is compiled in "Use MFC in shared DLL", every thing is fine.
but when the control is compiled in "Use MFC in static Library", mouse dispears in CRectTracker.
I included "afxres.rc" in rc file and AFX_NO_TRACKER_RESOURCES is not defined, but the mouse problem is still same thing.
note: it is an ActiveX control, not normal MFC app.
can you help?
thx.
|
|
|
|
|
Hi there,
I have a list in which each Node holds an object of the class CItem
<pre></pre>
class CList{
...
CNode * mpListHead; };
class CNode{
double GetPos() const { return mpItem->GetPos(); }
...
CItem * mpItem; };
class CItem{
double GetPos() const { return mdPosition; }
...
double mdPosition; };
Each Item can be of a different type
class CEmboss : public CItem {...};
class CAnneal : public CItem {...};
And some of the items need to have some member data and functions that are not required in the rest, for example:
class CEmboss : public CItem {
...
int GetOrientation() const { return mnOrient; }
...
int mnOrient; };
The question is, how do I implement a GetOrientation() function in CNode??
I get a compiler error when mpItem->GetOrientation() because some of the Items don't have this method.
One option is to put that function in CItem, even though it won't be used for some of the Items, but I'd prefer to put it only in CEmboss. Is there any way of doing this??
|
|
|
|
|
You can cast your generic object into a CEmboss object. The best way to do it is to use dynamic_cast:
CEmboss* pEmboss = dynamic_cast<CEmboss*>(pItem);<br />
if (pEmboss)<br />
pEmboss->GetOrientation();
The dynamic cast will return NULL if the object is not of the specified type (takes advantage of the run-time type information).
|
|
|
|
|
Hi,
How about that:
in class CItem :
virtual int GetOrientation() = 0
that makes CItem "uninstanceable" you cant have a CItem it's 'virtual class'.
OR (I think it will better suit you)
#define NO_ORIENTATION -1000
virtual int GetOrientation() {return NO_ORIENTATION;}
in both ways:
creating CEmboss and putting in the node (mpItem) then GetOrientation() will go to the
GetOrientation() of CEmboss.
This all stuff is called "polymorphism" in OOP.
|
|
|
|
|
Thank you guys.
I must admit that I don't like very much the option proposed by Hanan888, because I would end up having a lot of methods in CItem that are used only in some of its derived classes. It would make CItem a bit messy.
On the other hand, I'd considered using dynamic casting, but the book I'm reading says it is not recommendable. That it might be a sign of poor inheritance hierarchy design.
I was just wondering if there was any other way.
|
|
|
|
|
piul wrote: On the other hand, I'd considered using dynamic casting, but the book I'm reading says it is not recommendable. That it might be a sign of poor inheritance hierarchy design.
It might be a sign. It is not for fact a poor or bad design.
codito ergo sum
|
|
|
|
|
piul wrote: On the other hand, I'd considered using dynamic casting, but the book I'm reading says it is not recommendable. That it might be a sign of poor inheritance hierarchy design.
It seems that you didn't really understand this sentence . It might be a sign of poor inheritance so, if you want to avoid using it, then you should review your inheritance and not make CEmboss inherits from CItem, but instead have a list with CEmboss objects only.
That's why it says might, because it is not always possible to avoid it. The two suggested approaches (dynamic cast and virtual functions) have both their disadvantages:
- dynamic cast will be a bit slower (but in the most cases, you won't even notice it, unless this code is heavily called)
- virtual functions in your case make the code less readable (what is this GetOrientation function doing in my CItem class ??)
It's up to you to decide.
|
|
|
|
|
Cedric Moonen wrote: - virtual functions in your case make the code less readable (what is this GetOrientation function doing in my CItem class ??)
I don't agree on the above point (I know it is matter of taste). Doing nothing is decorous for a method and maybe useful: nobody questions (at least I hope), for instance, on empty set usefulness (BTW doing nothing is one my preferred activities ).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
|
|
|
|
|
I think it depends of the situation. I was thinking about the case where you could have several child classes (5 or 6) and each of them needs one or two specific methods (and those methods only make sense in the child classes). Imagine the mess it would be . And this situation is not that 'extreme'.
Of course, it all depends of the situation.
CPallini wrote: (BTW doing nothing is one my preferred activities ).
I thought it was surfing on CP
|
|
|
|