|
The following is getting close - but I get an error complaining of multiple definitions, both pointing to the implementation of the function??
Note: By the way I'm using gcc on Ubuntu.
template <class T>
ContainerClass
{
T pop() { void push(T) {
T findNextItem(TypeEnum myType);
};
template <>
MySpecificClass ContainerClass<MySpecificClass >::findNextItem(TypeEnum myType)
{
}
modified 5-Mar-12 18:26pm.
|
|
|
|
|
The following compiles for me.
I'm using VC 2010.
enum TypeEnum {};
class MySpecificClass {};
template <class T>
class ContainerClass
{
T pop() {}
void push(T) {}
T findNextItem(TypeEnum myType);
};
template <>
MySpecificClass ContainerClass<MySpecificClass>::findNextItem(TypeEnum myType)
{
return MySpecificClass();
}
int _tmain(int argc, _TCHAR* argv[])
{
ContainerClass<int> a;
ContainerClass<MySpecificClass> b;
return 0;
}
|
|
|
|
|
I need to add a software update check to my program. I started by writing a winsock function and making a call to my web site to get a document using
trncpy_s( sendbuf, 1024, "GET /updates/siteAdministrator.exe.txt HTTP/1.0\r\n", strlen( "GET /updates/siteAdministrator.exe.txt HTTP/1.0\r\n") );
strncat_s( sendbuf, 1024, "Host: www.website.com\r\n", strlen( "Host: www.website.com\r\n" ) );
strncat_s( sendbuf, 1024, "\r\n", strlen( "\r\n" ) );
My Question 1 is:
Without downloading other pre-fabricated programs that does this, or trying to reverse engineer other programs,
What would you recommend that I connect to just to get going at a beginners level. Perhaps a web service that returns the current version, or just a text file that contains the current version, and what information should I return?
If it's a text file, what recommended format would you suggest?
Question 2:
I'm looking for a way to resolve a URL to an IP Address, for this part of my winsock. I don't want to hard code it, because inside my LAN, I use private numbers, and outside my LAN is public numbers.
sTargetDevice.sin_family = PF_INET;
sTargetDevice.sin_addr.s_addr = inet_addr( ipAddress );
sTargetDevice.sin_port = htons((unsigned short) ipPort);
|
|
|
|
|
jkirkerx wrote: I'm looking for a way to resolve a URL to an IP Address...
Are you referring to gethostbyname() ?
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous
|
|
|
|
|
Jeopardy Answer, I will give that a try.
Thanks Dave,
Will let you know how it works out.
|
|
|
|
|
I would use a text file with a specific format (eg XML). The content depends on your requirements. Useful information are version, date, and URL of the update archive/executable file (so it can be stored on another host).
To resolve a host name to an IP address, use the Winsock function getaddrinfo [^].
|
|
|
|
|
I thought about xml, but I need to learn how to read XML in c++ win32.
Those are good ideas, I'm going to finish my splash dialog and wait for some more ideas today.
|
|
|
|
|
It would be well worth your time to learn to create and process XML in both C++ and C#. XML comes in real handy these days. Hardly anybody but us dinosaurs read flat text files anymore.
|
|
|
|
|
In vb, I use XMLTextWriter and XMLTextReader while creating a class of an XSD model file. I'm really good at it.
Just thought doing it in c++ would be a very long journey, but overall, I need to write a ton of XML configuration files for my program anyways, so the journey begins tomorrow.
Thanks Chuck.
|
|
|
|
|
Windows? !Windows? - I know, "winsock" might be a clue
If you are using Windows, why bother playing using sockets and use WinINet, it will do all the address translations, proxy-crap, etc for you.
The sequence there would be
InternetOpen()
InternetOpenURL()
HttpQueryInfo()
InternetReadFile()
for the URL, you'd just pass "http://www.website.com/updates/siteAdministrator.exe.txt". Use HttpQueryInfo() to find out how much output is coming back and InternetReadFile() to fetch it all.
|
|
|
|
|
I didn't know about it!
Does sound easier. That's why I was looking for ideas.
I'll check it out.
FYI:
It's hard to find solutions when you don't even know what to call them, let alone know that they exist.
Thanks Chuck.
|
|
|
|
|
Hello,
I was wondering if any of you'll know any native compilers or compilers the use the very, very first form/version of C++ (like it came from Bjarne Stroustrip) and also some C compilers, try to suggest free ones.
Regards,
Brandon T. H.
|
|
|
|
|
I'm not certain I understand what you want.
You want the first "C++" compiler (or probably at that time C compiler that support the C++ extensions) ?
For free C/C++ compilers, have a look at GCC and G++.
Watched code never compiles.
|
|
|
|
|
Maximilien wrote: I'm not certain I understand what you want.
Maximilien wrote: You want the first "C++" compiler
Yes, the very first form of C++, or some un-managed C++ compilers.
|
|
|
|
|
Brandon T. H. wrote: Yes, the very first form of C++, or some un-managed C++ compilers.
There's a big difference. Most free C++ ones only compile 'unmanaged' (that is native) C++ (even the Microsoft C++ one compiles the native C++ , it is NOT 'only for managed C++ '). On the other hand, C++ has evolved (improved) and you'll probably find that an updated compiler is way better than an old one.
Veni, vidi, vici.
|
|
|
|
|
True...but the lower the version, it works on almost any computer.
Hint: The .NET (managed) C++/CLI requires .NET framework installation (and also internet to install it).
So what would you say is better overall...
|
|
|
|
|
It is better having a modern C++ compiler (NOT a C++/CLI one*, C++/CLI is NOT standard C++ , is a Microsoft 'extension'). Modern C++ compilers produce native code like older ones do (very outdated C++ compiler, e.g. turbo C++ , produce code not running on modern computers).
(*) Or use the 'C++/CLI enabled' compiler for compiling standard C++ code. As I said before, Microsoft compiler CAN produce native (not requiring the .NET framework) code.
Veni, vidi, vici.
|
|
|
|
|
How would you do that, could you show me like going into the menus into the "Microsoft Visual C++ compiler"?
|
|
|
|
|
On Visual Studio 2005 (the one I have here) click the menu item New->Project and then choose one of either Win32 or MFC project templates.
Veni, vidi, vici.
|
|
|
|
|
Thanks...appreciate it
|
|
|
|
|
You might have to do some digging around to find those old compilers.
'Lattice C' was the first C compiler I ever used. It was available for DOS and was used by NASA in the 1980s.
The first C++ compilers weren't really compilers. There were pre-compilers. They would convert the C++ code to C code, then you'd compile and link the C code it produced.
|
|
|
|
|
Google for 'turbo c++' There are lots of free downloads of the ancient Borland products, back to the days when the c++ standard was still evolving.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994.
|
|
|
|
|
I'm trying to find a 64-bit version of Turbo...none of them seem to work on my computer. (Compatbility problems...)
|
|
|
|
|
Turbo C++ 2.0 is still available on some websites to download.
But I am rather confused by this post. Why would you need the old compiler? and as for the unmanaged part, C++ modern compiler are unmanaged too. the CLI version of C++ is different. (just wondering)
|
|
|
|
|
The lower the version, the chanes of it working on any computer is increased.
|
|
|
|