|
Thanks, but I am not going to rewrite a few hundred of classes, possibly breaking several projects along the way, just for this cause.
Having CArray with all its upsides and downsides is a must.
|
|
|
|
|
I know what you mean. I have a lot of code in several DLLs that sill has MFC containers and in most cases it is better not to rewrite but I wish I would have known stl in the first place. Anything new I will use stl containers instead of MFC.
John
|
|
|
|
|
You could declare all the members you want automatically copied in a structure defined within the class - C++ will then generate an assignment operator for that structure.
e.g.
class Blah
{
private:
struct Hidden
{
int a;
int b;
};
Hidden h;
CArray<int,int> array;
Blah& operator=(const Blah& copy)
{
h = copy.h;
// Copy the array...
}
};
However, as others have pointed out, if you use STL you don't run into these problems.
Dave
http://www.cloudsofheaven.org
|
|
|
|
|
The idea is good, however separating some variables into a structure just for coding convinience would not make sense to someoneelse reading the code.
|
|
|
|
|
|
What about writing a quick subclass of CArray that defines operator= and simply calls CArray::Copy()? That would still be compatible with your other class that just use CArray.
--Dean
|
|
|
|
|
Thank you. This is exactly the answer I was looking for!
I derived a class from CArray and added operator= to it. Now compiler has no trouble generating default assignment. Everything works perfectly!
|
|
|
|
|
There is a problem in your assignment operator. If someone assigns an object to itself your code will fail on dynamic data such as CArray. For example:
CMyClass A;
A=A;
//What happens to arSomArray?
To solve this I create a private destroy() and copy() functions and implement the copy constructor and assignment operator as follows:
PROPERTY::~PROPERTY()
{
destroy();
}
PROPERTY::PROPERTY(PROPERTY & other )
{
copy(other);
}
PROPERTY& PROPERTY::operator =(PROPERTY & other )
{
if ( &other != this ) {
destroy();
copy( other );
}
return *this;
}
copy() does the copy of data from one class to the other similar to what you did in your assignment operator
destroy() deletes any dynamically allocated data.
I have an idea to solve your problem that I will post a little bit later.
John
|
|
|
|
|
Thank you for the reminder. I remember I've read some article on CodeProject about dangers of CArray such assigning to itself or from reference to itself. I will keep this in mind.
As for the answer to my problem, Dean Goodman already answered it.
|
|
|
|
|
I was just writing some code for my idea... Anyways make sure you provide a copy constructor otherwise the complier would provide one and circumvent your code for the following code
CMyClass a;
CMyClass b = a;
This code will not call the = operator. It uses the copy constructor...
John
|
|
|
|
|
I’m using the serialize() function to save and open data and it works fine within the program. But when I try to open “myFile.txt” with Notepad the characters are not recognizable. Does anyone know what is happening? What do I have to do to make the file readable in Notepad? Below is the code I wrote.
Thanks,
Ruben
void CMyDlg::OnButtonSave() <br />
{<br />
CFile myFile("c:\\myfile.txt", CFile::modeCreate | CFile::modeReadWrite);<br />
<br />
CArchive arStore(&myFile, CArchive::store);<br />
<br />
CMyDlg::Serialize(arStore);<br />
<br />
arStore.Close();<br />
}<br />
<br />
void CMyDlg::Serialize(CArchive& ar) <br />
{<br />
CString str;<br />
<br />
if (ar.IsStoring())<br />
{
str.Format("This is a line");<br />
ar << str;<br />
}<br />
else<br />
{
ar >> str;<br />
} <br />
}<br />
<br />
void CMyDlg::OnButtonOpen() <br />
{<br />
CFile myFile("c:\\myfile.txt", CFile::modeReadWrite);<br />
<br />
myFile.SeekToBegin();<br />
CArchive arLoad(&myFile, CArchive::load);<br />
<br />
CMyDlg::Serialize(arLoad);<br />
<br />
arLoad.Close();<br />
}
|
|
|
|
|
Serialize stores the data in a binary format.
John
|
|
|
|
|
So I will have to use fstream in order to be able to see the data externally?
Ruben
|
|
|
|
|
Yep. You're probably better off doing it that way, anyway.
"When a man sits with a pretty girl for an hour, it seems like a minute. But let him sit on a hot stove for a minute and it's longer than any hour. That's relativity." - Albert Einstein
|
|
|
|
|
|
I know how to write data using fstream but have not been able to figure out how it works reading. Do you know a tutorial?
Thanks,
Ruben
|
|
|
|
|
I'm trying to get back into the hang of programming so I'm writing a small chat program and I need to determine my IP. Anyone has any snippets of code to help ? (I'm using VC++ 6.0 btw).
|
|
|
|
|
One way is gethostname() followed by gethostbyname().
|
|
|
|
|
One solution is getnameinfo().
Kuphryn
|
|
|
|
|
I'll add one comment here -- it's pretty rare that you ever need to know your own IP address.
More often than not, your own IP address is pretty useless, unless you want to print it to the screen out for reference.
If you want to talk to another process on the same machine, you can use 127.0.0.1 as the IP (same as localhost).
If you send either a TCP or a UDP message to another process -- then that process also receives information about where the packet of data came from. Using that information, you can send data back to the sender through a different connection....
"A" wants to talk to "B".
"A" needs to know the address and port to talk to "B".
"A" sends message to "B" using the address of "B" and port XXXX.
"B" now knows the address of "A", and "B" can now send a message to "A" assuming that he knows the port.
This may be too much information and totally off the point. But I thought I should add it anyhow.
Enjoy.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />
Peter Weyzen<br />
Staff Engineer<br />
Santa Cruz Networks
|
|
|
|
|
when a user signIn into MSN messenger , there comes a window at the right bottom of the screen, how can i build this, plz help, or any webpage ragarding help on this
Knowledge is Power
|
|
|
|
|
There you go:
http://www.codeproject.com/dialog/statusbarmsgwnd.asp?target=msn%7Cmessenger
You can also have some tutorial on how to do this in C#.
bye
Everything's beautiful if you look at it long enough...
|
|
|
|
|
Hi All...
I have been doing a little searchng, and am having a hard time finding a succinct explanation (for a beginner) of how to go about creating an app from scratch. My idea is this: I want to create a windows based program that will emulate an electrical system as you would find in a building (residential/commercial/industrial).
(note: I am an electrician by trade, no longer working due to injury, and back in college at 35 to try and get a BSEE. I took a c++ class last semester and this is why I am torturing you all with all these knuckleheaded questions, the class did not get into development for Windows, it was just programming basics.)
Anyway, I just want to do this for the sake of doing it (the learning experience). I will use Dev-cpp, but also have VC++ 6.0 available to me in a student version (although I do not want to use it). I have no intention of releasing this for anything (although if I could make it work well enough, I might just for entertainment purposes, like say to let people see what would happen if they hooked 5000 volts up to their house .....).
My question is this: Where do I start? Would it work if I designed the classes I will need (power source, switch, wire, circuit breaker...etc.) in a console app then integrated them into a windows environment, or should I make it a Windows app from the start? Also, what would be the easiest environment in which to create graphical representations of my classes? Would bitmaps be best? I need to keep this relatively simple (obviously) and my main question is what would be the best Dev environment for this idea? Thanks for the time.
|
|
|
|
|
I'm not sure I would tackle such a problem using C++ (not that it can't be done (DirectX comes to mind), but I don't do graphics and would therefore tend to use a tool that helped me out as much as possible). Based on what you've said, it sounds like Flash would be a better tool for the job. If you've got time, go to www.howstuffworks.com and check out the graphics on their many article pages. They used Flash to create them. Some of them are animated, which I suspect would be a nice feature for you. Show the electricity coming down from the transformer into the breaker box, waiting idly until someone flips a switch and completes the circuit, thus illuminating the bulb, etc.
|
|
|
|
|
OK, my reasoning behind using c++ is that it is the only programming language in which I have any experience at all, I have never used Flash, but if it were something I could puzzle out with a basic knowledge of c++ I would be willing to give it a try.
Also, checked out howstuffworks.com, and that is not really what I had in mind, I want a GUI app that will allow somone to set up an electrical circuit(s). I then want to be able to emulate how that circuit would function under given conditions with a variety of variables. I don't necessarily want to have highly detailed graphics, the ability to manipulate variables is more important. (for instance, building a 120 volt system, then introducing a condition that creates a current overload, or changing the voltage and emulating all the resultant breakers tripping, appliances frying etc.) Can this type of variable manipulation be done with Flash?
|
|
|
|