How to create a header file - c++

I am trying to learn to develop C++ code with eclipse. I have create a class in a cpp file. Do I need to create an include file by hand (just copy and paste the header definitions), or is there some fancy eclipse button which can create the header file automatically for me?

As far as I know there is no way to generate a header-file out of the cpp. Instead, by using the other direction, it should be possible to generate a method-stub from the function definition within the header (by selecting function-prototype, MenuBar: "Source" > "Implement Method").
Maybe there are some plugins available that do what you want.

Eclipse CDT allows you to write a prototype in the header file, and automatically add it to the C++ file.
Steps to follow
1.Add function prototype to .h file void funct()
2.Select the function name "funct" (try double clicking)
3.In the toolbar click Source -> Implement Method
4.Wizard it up

Related

Creating .ipp files in Eclipse

I am using C++ to do a homework assignment. I am using templates for my class, so I need all implementations of template methods to be in .ipp, not .cpp file (I can't write implementation in .h file as it is the assignment submission requirement)
Eclipse does not seem to support .ipp files without additional settings. There is not much information about .ipp files on the internet, I could not find anything helpful.
I defined a new file type in Eclipse preferences to be able to create an .ipp file. Now that I am trying to write my methods definitions in .ipp file, it keeps complaining that "member declaration is not found" even though I write #include *.ipp" at the end of my header file.
What could the problem?
You have to register .ipp as C++ source file extension:
In Window > Preferences: C/C++ > File Types click New...
Enter the pattern *.ipp and as type select C++ Source File
Click OK
Click Apply and Close

how can creat MFC extention dll with multi class?

I want to create a MFC extention dll, my problem is the class that I want use in client include some header file that implemented in my project, now how can use it in client?
For example the header file class that want to export from my dll is like below
#include "classme1.h"
#include "classme2.h"
class AFX_EXT_CLASS dllclass
{
...
//anthor function
};
When I include this header file in client, the client project has error and need two file "classme1.h" and "classme2.h".
What I do to solve my problem?
Copy the header files in a common place were both projects can read them.
You can define the path in the #include statement, or you can change the project settings for the C++ pre processor to search the files in different additional directories.
Project settings -> C/C++ -> General -> Additional Include Directories.
For complex projects I very often use the Property Manager. You can define specific settings and add them to your current project. It is just a file that allows you easily to customize projects.
Remember that you also need a reference to the LIB file. It must bes specified in the linker section. Or must be added to the project too. (see tip above).
Alternative to xMRi's suggestion is to refactor your extension DLL to remove the need for a client to include your private header files.
Read about PIMPL Idiom (Pointer to IMPLementation), for example here: Why should the "PIMPL" idiom be used?

How can I use enum written in idl in same project (MFC Control)

I have a MFC control that has an idl file "Test.idl" where I define some enum.
However, if I want to use this enum in the MFC control, I have to include the auto generated header "Testidl.h" that is created by midl.
Ok, but I have a periodic problem. If the autogenerated file "Testidl.h" is not existing, I cannot include that file, thus, cannot compile my control and, thus, cannot create the autogenerated file.
The problem is (I guess), hat the MIDL step is done AFTER C++ build.
Am I correct and can I solve this behaviour somehow?
As long as the IDL file is included in the project's Source Files list the MIDL step should be done first and generate the associated .h file.

I have a .dll that I want to edit with the source code. Which files would I need to edit?

I only want to edit a function in the .dll.
I have these following file types: .c, .h, .lib, .def, and the actual .dll.
Say I want to change a function's parameters from 1 to 2 variables, which files would I need to edit?
Then, how could I compile the files to a new .dll?
I'm using Dev C++.
Thanks.
If it's an exported function (accessible from outside the dll), you need to edit
the header (.h file) to add your argument to the function prototype
the source (.c file) to handle your new argument in the function body
anywhere that calls the function, because now it has to pass an extra argument
Knowing how to compile this to a new dll is a different matter, because we don't know how it was built in the first place. Do you have a makefile or anything?
If not, you'll need to learn how to compile projects in Dev C++.

Managed C++ - ignored Header file

So I’ve got a HEADER(.h) and a SOURCE(.cpp) file in a Managed C++ VS2010 solution.
My solution builds successfully even though I added garbage to the header.
public:
someConstructor(); // assume the syntax is good here
asdf // garbage
Why I did this
My original problem was that I couldn't update my CPP file to add a new constructor. When I added a new constructor to my CPP file, my solution failed to build due to a non-existent overridden member function, i.e. my new constructor. I added garbage to the HEADER file to make sure that VS2010 was actually reading my HEADER file. Obviously it was not.
How can I make sure that VS2010 looks at my HEADER file? It seems to be looking at another HEADER file...
Thanks
If you select the file(s) in question and open up the properties window (View->Properties Window) you can see if your project is looking at the correct file or not. Additionally, if the file is not being included in the build (even though it's in the solution), you can set Include in Project to true.
Note that I'm assuming you're using MSBuild. If you're using some other build system, there may be a different procedure for ensuring the build is using the correct header file.