|
Hi all,
I am testing a certain function and I am getting an error
"error C2660: 'boost::unit_test::make_test_case' : function does not take 3 arguments"
This is the code below:
#include <boost/test/unit_test.hpp>
using boost::unit_test::test_suite;
test_suite* init_unit_test_suite( int argc, char* argv[] )
{
test_suite* test = BOOST_TEST_SUITE( "Test Convert" );
boost::shared_ptr<MailFile<MAPIMSG>> instance( new MailFile<MAPIMSG> );
test->add( BOOST_CLASS_TEST_CASE(&MailFile<MAPIMSG>::Convert, instance) );
return test;
}
What is wrong with this code?
|
|
|
|
|
Can anybody tell me what is the use of abstract class
since we cant instantiale the abstract class... so why we are using it...
and one more question...
if we define a function as const and static in a class so what are the diffreence when we create the instance of that class other then if we dont define... as static and const..
thanks
tasu
|
|
|
|
|
tasumisra wrote: Can anybody tell me what is the use of abstract class
since we cant instantiale the abstract class... so why we are using it...
Abstract classes are used when you want to provide a common base class to several objects but you don't want to be able to instantiate it directly. Maybe a little example will make things clear.
Suppose you are writing an asteroid game in which you can have several 'entities': the player plane, the asteroids and the missiles shooted by the player ship. Obviously, they all have some common 'functionalities' (they need to be drawn on the screen, you can move them, they can be destroyed, ...), so it make sense to inherit from a common base class, the CEntity class (for example). Of course, you don't want to be able to instantiate a CEntity directly so, you will make it an abstract class. For example how to draw the different entities on the screen depends on the entity itself, so you can make this function a pure virtual function (meaning that the child classes MUST implement this method, which is logical).
Hope this makes a little bit more sense.
|
|
|
|
|
tasumisra wrote: so why we are using it...
To provide an interface which can have different implementations (derived concrete classes).
|
|
|
|
|
tasumisra wrote: Can anybody tell me what is the use of abstract class
since we cant instantiale the abstract class... so why we are using it...
To enable polymorphism.
That's the, um, abstract answer. A more concrete answer...
Consider your computer. You can swap out different parts, put in a new hard drive, exchange your soundcard for a better one, put in a DVD burner, etc. In order for this to work, each component has to adhere to an interface the computer recognizes. This allows the components to be interchanged.
Abstract classes provide the same kind of functionality only with software instead of hardware. An abstract class representing an interface can be used as a base class. Derived classes provide the actual implementation. Because they all have the same base class, they can be exchanged in certain parts of the software just like the hardware components described above.
tasumisra wrote: if we define a function as const and static in a class so what are the diffreence when we create the instance of that class other then if we dont define... as static and const..
I'm not sure I understand the question. static methods exist at the class level. They don't rely on a specific instance of the class to exist.
|
|
|
|
|
hi! Can I create a theme and in my application create a control with theme, which is created by me, using SetWindowTheme etc.? Does anybody know how do it (create a theme and "connect" to it)?
Thanks for any helps
|
|
|
|
|
Ok, I have the function with signature:
bool fncSame(std::string &x, std::string &y)
and a pointer defined as :
typedef bool (*pf)(std::string &, std::string &);
and
pf pfn = &WorkerClass::fncSame;
but it throws the error:
error C2440: 'initializing' : cannot convert from 'bool (__thiscall WorkerClass::* )(std::string &,std::string &)' to 'WorkerClass::pf'
what am I doing wrong?
TIA
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rick Cook
"There is no wealth like knowledge, no poverty like ignorance." Ali ibn Abi Talib
|
|
|
|
|
Member functions and globabl functions don't have the same prototype: for member function, an implicit parameter is passed in the argument list (the this pointer, identifying to which class instance the function belongs to). Thus, they are not compatible.
A way to solve the problem is to declare your member function as static, but then it won't belong to any instance (meaning that it won't be able to access non-static class members).
I think you can also declare in the function pointer that the function belongs to a certain class (but I'm not qbsolutely sure, you have to try it out):
typedef bool (WorkerClass::*pf)(std::string &, std::string &);
|
|
|
|
|
Nope,
gave me this error instead:
error LNK2019: unresolved external symbol "public: bool __thiscall WorkerClass::fncSame(class std::basic_string<char,struct std::char_traits<char="">,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char="">,class std::allocator<char> > &)" (?fncSame@WorkerClass@@QAE_NAAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@0@Z) referenced in function "public: __thiscall WorkerClass::WorkerClass(void)" (??0WorkerClass@@QAE@XZ) WorkerClass.obj
now its getting so that I don't understand what the error means
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rick Cook
"There is no wealth like knowledge, no poverty like ignorance." Ali ibn Abi Talib
|
|
|
|
|
That is a different error: now your code compiles correctly but you have a linker error. It simply means that your function is known by the compiler (you provided a prototype) but no implementation has been found. So, provide an implementation and that will probably solve the problem.
|
|
|
|
|
Cedric Moonen wrote: Member functions and globabl functions don't have the same prototype
But the method fncSame is not a global function
But I do see what you mean and why that would be a possible issue.
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rick Cook
"There is no wealth like knowledge, no poverty like ignorance." Ali ibn Abi Talib
|
|
|
|
|
Mustafa Ismail Mustafa wrote: But the method fncSame is not a global function
No, but that's what I said. Your typedef defines a pointer to a global function, not for a class method. And your fnSame is a class method.
So, they are not compatible.
|
|
|
|
|
Thanks Cedric, got it working
"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning." - Rick Cook
"There is no wealth like knowledge, no poverty like ignorance." Ali ibn Abi Talib
|
|
|
|
|
hi friends,
i have a very basic doubt regarding the file operations using FILE * fp.
i.e. how can i delete a record from a file.
|
|
|
|
|
Basically deletion of data from a file requires the following steps
1. Create a new file
2. Copy all the content from source file, excluding the data to be deleted
3. Delete the source file
4. Rename the new file as the source file
- NS -
|
|
|
|
|
thanks boss,
but till now i had been implementing this technique.
i wanted some straight forward alternative.
thank you.
|
|
|
|
|
If you work with records (formatted data) you can make a flag that the record is deleted. Than you have only to change a byte in the file.
Greetings from Germany
|
|
|
|
|
I had the same problem once. And I made it as KarstenK has said.
I was setting a flag that meant "deleted" but with one difference. That was only while the programm was running. When the programm was closing (OnDestroyWindow (), OnCloseDocument () or any other message you want to use) I made an update from file doing the process that NS17 has told you. Is the only process I know to do it with FILE. Another thing is with CArchive and its Serialize.
Making it so, you have max quickness during programm execution but the report stays in "desirable" limits. If not, after some "days" you may have a report with lots of deleted members which flag has to asked too know if they are valid or "deleted"
Greetings.
--------
M.D.V.
If something has a solution... Why do we have to worry about?. If it has no solution... For what reason do we have to worry about?
Help me to understand what I'm saying, and I'll explain it better to you
|
|
|
|
|
I am making project in vc++ and i got problem of the unhandled violation in vc++ MFC.
whenever I create the object of other class in same class and then I use it for some operation then I got this error. My Error is like below.........
0xC0000005: Access violation reading location 0xccccccd0.
Plz kindly Reply me if you have any solution.
Thanks in Advance.
Ashish Bhatt
|
|
|
|
|
Plz post Some code that u write in your application.
so i can help.
hiren thakkar
|
|
|
|
|
I have Classes like below
TestRTMPDlg ///Main Dialog class
RTMPBuffer
RTMPClient
RTMPSocket
When i declare object of RTMPBuffer class in RTMPClient class in header file and then I call the function of RTMPBuffer class then i got the run time error like.......
/////////////////////////////
Unhandled exception at 0x004196c8 in TestRTMP.exe: 0xC0000005: Access violation reading location 0xccccccd0.
//////////////////////////////////
Plz Reply yar if u got some solution.
ok bye.
Ashish Bhatt
|
|
|
|
|
Probably you have a pointer variable which did not intialized properly. Or you try to copy variable to another variable which was not reserved using "new". Check your RTMPBuffer class.
Ian
|
|
|
|
|
ashish , when u got the error then u got abort retry box. then click retry button then press
alt + 7 then u got call stack. click line in call stack one by one . then u got the line on which got error . send me that line.
if code is not large then mail me. i will check it.
hiren
|
|
|
|
|
|
You've posted no source and no call stack; how can we possibly help given such limited data?
Steve
|
|
|
|