|
Do you mean something like
#include <iostream>
using namespace std;
class A
{
int _i;
public:
A(int i):_i(i){}
int get() const {return _i;}
};
class B
{
A _a;
public:
B():_a(10){}
B(int i):_a(i){}
const A & get(){ return _a;}
};
int main()
{
B b0;
B b1(1);
cout << b0.get().get() << ", " << b1.get().get() << endl;
}
|
|
|
|
|
Well,
The issue is very similar to that example.
I note the curly braces and the absence of a terminating semi colon.
What is the reasoning behind the syntax.
Does that syntax intentionally leave out the terminating semi colon, or, is that an oversight?
Going to try that!
Thanks and Regards
Bram van Kampen
|
|
|
|
|
.
modified 24-Nov-17 13:55pm.
|
|
|
|
|
Can you solve it on a piece of paper? While many could, no one is going to write the code for you. Give it a shot, and if you have specific questions, people here are usually more than willing to help.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
|
|
|
|
|
Have you considered FC from a command prompt?
"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
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
If you are looking for a solution and not just to code it then you can google for an open source software called winmerge. It allows for a command line option to produce a diff and provides for UI view as well as various configuration options.
There are other tools as well.
|
|
|
|
|
.
-- modified 24-Nov-17 13:56pm.
|
|
|
|
|
Member 13433022 wrote: regardless of the order in which those paragraphs are placed in the two different files
With that requirement I don't know any existing tool because those usually try to find the next identical sequence.
But writing such a tool for your requirement is not very difficult:
- Read file 2 completely into allocated memory (one more byte to append a NULL char)
- Count the number of lines (number of LF chars)
- Allocate a buffer for
char* pointers to hold the pointers to the beginning of each line
- Fill the line pointer buffer (search for next LF and store address plus one)
- Read file 1 line by line and check if that line matches any line from the file 2 buffer
- If there is no match, write the line to file 3
|
|
|
|
|
Message Closed
modified 24-Nov-17 14:01pm.
|
|
|
|
|
Please read this link HOW TO ASK A QUESTION - C / C++ / MFC Discussion Boards[^] near the top of this page, specifically #2. Many people here are very knowledgeable and will help you with questions during your coding endeavors, but generally will not serve up code to order.
"the debugger doesn't tell me anything because this code compiles just fine" - random QA comment
"Facebook is where you tell lies to your friends. Twitter is where you tell the truth to strangers." - chriselst
"I don't drink any more... then again, I don't drink any less." - Mike Mullikins uncle
|
|
|
|
|
I would use the C standard library functions fopen , fread (full file), fgets (read line), strchr (find NL), and strncmp (find match).
A quick try from scratch without error checking (therefore untested):
#include <stdio.h>
#include <sys/stat.h>
struct stat st;
stat(file2, &st);
char *buf = new char[st.st_size + 1];
FILE *f2 = fopen(file2, "rb");
fread(buf, 1, st.st_size, f2);
fclose(f2);
buf[st.st_size] = 0;
unsigned lines = 0;
char *p = buf;
while (NULL != (p = strchr(p, '\n')))
{
p++;
lines++;
}
char **lineptr = new char* [lines+1];
p = buf;
unsigned i = 0;
lineptr[0] = buf;
while (NULL != (p = strchr(p, '\n')))
{
lineptr[++i] = ++p;
}
char linebuf[1024];
FILE *f1 = fopen(file1, "rb");
FILE *f3 = fopen(file3, "wb");
do
{
if (NULL == fgets(linebuf, sizeof(linebuf), f1))
break;
if (0 == linebuf[0])
break;
if ('\r' == linebuf[0] || '\n' == linebuf[0])
continue;
for (i = 0; i < lines; i++)
{
if (0 == strncmp(linebuf, lineptr[i], strlen(linebuf)))
break;
}
if (i >= lines)
fputs(linebuf, f3);
}
while (!feof(f1));
fclose(f3);
fclose(f1);
delete [] lineptr;
delete [] buf;
|
|
|
|
|
Member 13433022 wrote: Since I do not have experience in programming,
What does that mean?
If you have zero experience then this shouldn't be the first thing to undertake.
There are other tools besides the one I mentioned and one of them might allow you to get close enough, by messing with configuration to either produce exact result or one that you can manually modify to reach a result.
If this sort of task is something that you are going to be doing on a normal basis then you should pick a language and start learning it.
As a recommendation unless you want to be a programmer, I would use perl (a language) as an ad hoc tool to supplement other occupations.
If however you want to program then you should start with one of the object languages, probably java or C#. Those would be easier initially, I think/guess, than C++. However regardless of language choice it is going to be better, as the first step, to either take an actual class or follow a tutorial exactly, unless you have an actual real world person that can help you when problems show up. The very first steps in programming can be very difficult when relying on the web.
|
|
|
|
|
Beyond Compare[^] can do something like that, though to actually do the write (vs. cut and paste) can be a little tricky.
|
|
|
|
|
Take file A and split into paragraphs. Search file B for each paragraph appending them to file C when not found. Swap files A & B then repeat.
You could do this in a single command line in bash I reckon.
|
|
|
|
|
Hi,
I have a windows service (system level) and a user level MFC app (non admin rights).
I need to send some notification to service from MFC app on some instance.
Is there any way to do it?
|
|
|
|
|
|
We have an application to do chemical process engineering calculations. As an inclusion, we require a graphics builder to be integrated to bring dynamics into it. So we need to develop a graphics builder kind of application.
It should have provision to create and add a new graphics pages and to save the graphics page which is to be linked to the existing application which does the calculations.
It should have a tool box with symbols of various equipments and when we drag and drop a symbol into the graphics page, it should be placed appropriately and connected to various other equipments.
Can you please suggest me how to start and proceed as i dont know how to create drag and drop graphics builder.
|
|
|
|
|
|
Is it possible to get some sample applications?
|
|
|
|
|
|
Hi
I have a number of rich edit classes in my project. Defined basically as such
class Myrich : public CrichEditCtrl they all have a default constructor with no parameters
I now wanted to extend their functionality with paging (up or down) cursor selection etc.
So I wrote a class KeyStroke. I declared KyStroke(s) in each of my classes as such
KeyStroke mykeys; in my .h class definitions. My constructer for KeyStroke takes 2
parameters the number of lines in the rich edit and a pointer to a rich edit class
So that meant I would have to modify my rich edit constructor as such
MyRich::MyRich() ---> MyRich::MyRich(int numlines, CRichEditCtrl* myrichptr) : KeyStroke(int numlines, CRichEditCtrl* myrichptr)
I am getting all sorts of errors with this such as "int" unexpected and KeyStroke no default contsructor
|
|
|
|
|
If you create a parameterised constructor for a class you must also provide a default parameterless one.
class KeyStroke
{
public KeyStroke(int numlines, CRichEditCtrl* myrichptr)
{
}
public KeyStroke()
{
}
|
|
|
|
|
I did that I am still getting errors as stated below
\progedit.cpp(13): error C2062: type 'int' unexpected
1> progdialog.cpp
while intellsense says class KeyStroke
"KeyStroke" is a nonstatic data member or base class of class Cprogedit
I have KeyStroke in Cprogedit.h as KeyStroke mystroke; in the public section of the class
I have defined a constructor for Cprogedit which will provide the paramters for Keystroke
as such
CProgedit::CProgedit(int numlines, CProgedit* editptr) : KeyStroke(int numlines, CProgedit* editptr)
KeyStroke::KeyStroke()
{
}
KeyStroke::KeyStroke(int numlines, CRichEditCtrl* editptr)
{
max_line = numlines;
edit_ptr = editptr;
}
|
|
|
|
|
Sorry, I cannot make head or tail of that. Can you show the class definition for Keystroke and indicate exactly where the error message occurs?
|
|
|
|
|
Not home now Dr appt but I'll paste the entire output in about 1 and 1/2 thanks so so so much
|
|
|
|