|
Just tossing another idea out there
Mark Salsbery
Microsoft MVP - Visual C++
|
|
|
|
|
Hi,
I am creating some controls through wizard in a dialog, but i see some IDS are shared among different controls, how this behavior would affect an overall project.
Best Regards,
Mushq
Mushtaque Ahmed Nizamani
Software Engineer
Ultimus Pakistan
"English is my second language; please excuse any grammatical or spelling mistakes"
|
|
|
|
|
Mushq wrote: ...but i see some IDS are shared among different controls, how this behavior would affect an overall project.
If those controls are on the same dialog, it would fail to work.
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
As long as notifications coming from them aren't being received in the same container window, there are no problems. If you get notifications from two different controls that share the same control id, it's not that easy to disambiguate.
Here's[^] a good tool for reorganizing your resource ids.
|
|
|
|
|
Thanx
Best Regards,
Mushq
Mushtaque Ahmed Nizamani
Software Engineer
Ultimus Pakistan
"English is my second language; please excuse any grammatical or spelling mistakes"
|
|
|
|
|
Mushq wrote: "English is my second language; please excuse any grammatical or spelling mistakes"
Your grammar and spelling are actually quite correct, I have noticed. Most of the time
I get all the news I need from the weather report - Paul Simon (from "The Only Living Boy in New York")
|
|
|
|
|
Thank a lot. I have changed my signature now.
Best Regards,
Mushq
Mushtaque Ahmed Nizamani
Software Engineer
Ultimus Pakistan
|
|
|
|
|
Hi all,
How can one create a ofstream - open("test.txt",ios ??) object that can accomidate file share read and write?
Many Thanks
Regards,
The only programmers that are better that C programmers are those who code in 1's and 0's
Programm3r
My Blog: ^_^
|
|
|
|
|
An ofstream object implies "insertion," whereas an ifstream object implies "extraction." Use an fstream object, instead, where you can specify ios::in | ios::out .
"A good athlete is the result of a good and worthy opponent." - David Crow
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
If I have Class B which is a multiple occurence of CLass A plus some added fuctionality
does it make sence to have the contructer of B declared
B :: B(CArray(A, &A))
{
Thankx
|
|
|
|
|
That clearly depends.
In the current case, your class b has a member variable of type CArray(A, &A) ?
Then it could very well make sense to have a c'tor like
B :: B( CArray(A, &A) Array)
: m_array( Array)
{
}
private:
CArray(A, &A) m_array;
Though I speak with the tongues of men and of angels, and have not money, I am become as a sounding brass, or a tinkling cymbal. George Orwell, "Keep the Aspidistra Flying", Opening words
|
|
|
|
|
I am not quite familiar with the last part of constructer prototype B : : (CArray(A &A) Array) : m_array(Array)
But I will look it up
Hope I am writting clearer
|
|
|
|
|
This is called "initializer list".
It is used to tell the compiler that you want to have the members initialized with c'tor parameters even before the c'tor code runs. This way, the compiler does not have to default-construct the members just for the c'tor code to overwrite them at once.
Quite often this is initialization all the c'tor needs to do.
Though I speak with the tongues of men and of angels, and have not money, I am become as a sounding brass, or a tinkling cymbal. George Orwell, "Keep the Aspidistra Flying", Opening words
|
|
|
|
|
|
Okay let me take this one step further
First off since the constructer has default values
I can declare B mybee; without any paramters
Then if I declare A mya
Then this statment is valid mybee[3] = mya
Since mybee is object of type A's
to set a limit mybee.setsize(3)
etc Have I got the right idea
|
|
|
|
|
Let me put that into code:
You have
class A {
int dummy;
};
class B {
B :: B( const CArray(A, &A)& Array)
: m_array( Array)
{
}
private:
CArray(A, &A) m_array;
};
B myB;
CArray(A, A&) arrA;
B myB( arrA);
Note that, as we have explicitly written a constructor, the compiler will not write another constructor for us - we must do this, if we need it.
Until now, B is neither derived from A nor from CArray(A) . It contains a (private, not accessible from the outside) CArray(A) .
So myB[3] is nonsensical - B is no array and does not have a operator[] .
Until now, the only way the m_Array member-variable in B can be filled is at construction time (by providing a CArray(A) ). And on the other hand, you can not construct a B without providing the CArray(A).
Though I speak with the tongues of men and of angels, and have not money, I am become as a sounding brass, or a tinkling cymbal. George Orwell, "Keep the Aspidistra Flying", Opening words
|
|
|
|
|
Could I possibly write the contructer B myB(CArray(A, A&) arrA): and then
does this make sense aRRA
A mya;
myB.aRRA[3] = mya;
|
|
|
|
|
Yes, this would be possible IF myB declares its member aRRA as public.
Otherwise, no access from the outside is possible.
Still, construction of a B would require a CArray(A, A&)
Would it be more appropriate for you to not have to supply a CArray(A, A&) at B construction time, but be able to add A s to the array contained in B ?
class A {
int dummy;
};
class B {
B::B() {
};
public:
void Add( const A& value) {
m_array.Add( value);
}
CArray(A, A&) GetArray() const {
return m_array;
}
private:
std::vector<A> m_array;
}; I Also added GetArray() , which gives you a copy of the array contained.
Note that there is no way of deleting A s from m_array . You would need to write a function for that.
Though I speak with the tongues of men and of angels, and have not money, I am become as a sounding brass, or a tinkling cymbal. George Orwell, "Keep the Aspidistra Flying", Opening words
|
|
|
|
|
Truth is since a derived class can write constructer for a base It can actullay access the private members of a base through the constructer it writes/codes for the base
|
|
|
|
|
ForNow wrote: can actullay access the private members of a base
No - I don't think so.
When the members are private , the derived class can not access them.
For protected , it can.
A derived class can call public or protected base-class constructors and member-functions and access public or protected base class members.
Or am I missing your point?
Though I speak with the tongues of men and of angels, and have not money, I am become as a sounding brass, or a tinkling cymbal. George Orwell, "Keep the Aspidistra Flying", Opening words
|
|
|
|
|
What about if the derived class writes its own Base CLass contructer. True the access is only at initilization but it can at that point in time access the Private members I think ????
|
|
|
|
|
ForNow wrote: What about if the derived class writes its own Base CLass contructer.
How would that look syntactically?
I have tried to write something, but I keep getting C2248: "Cannot access private member declared in class 'B'" in class 'C ' or C3241 "Method was not introduced by 'B'".
class A {
int dummy;
};
class B {
public:
B::B()
{};
void Add( const A& value) {
m_array.push_back( value);
}
std::vector<A> GetArray() const {
return m_array;
}
private:
std::vector<A> m_array;
};
class C : public B {
C::C()
: B.m_array( std::vector<A>( 2, A()))
{}
B::B( const std::vector<A>& val) {
m_array = val;
}
};
Though I speak with the tongues of men and of angels, and have not money, I am become as a sounding brass, or a tinkling cymbal. George Orwell, "Keep the Aspidistra Flying", Opening words
|
|
|
|
|
I cant say becuase you are far away more of an expert on OO then me
Was just reading the Book Visual C++ 2005 as I have VS 2005 Team Edition for developers and have a solution which I am wrtting an additional project to extend it The orignal Project /Solution was a C makefile project I am using this project to learn OO C++
Thankx
|
|
|
|
|
Hi all,
I have a function that sets the current working directory of a FTP server:
ftpupdate::ftp_setServerDirectory((char*)setSvrSdir);
It works when I try it on Cerberus FTP server but, when I use IIS FTP server I receive a error stating that the directory does not exists. I noticed that the IIS FTP server switches the slashes i.e.
I set the server directory:
<br />
ftpupdate::ftp_setServerDirectory("\\<directory>\\<sub directory>");
IIS: //<directory>//<sub directory> does not exists
Why is IIS doing this and not Cerberus?
Regards,
The only programmers that are better that C programmers are those who code in 1's and 0's
Programm3r
My Blog: ^_^
|
|
|
|
|
My guess...
I know unix & windows use /\ delimiters. I *assumed* the ftp protocol demands the / version (linux was around for a while before...). Maybe IIS is being thick?
Could you not do:
if (!ftpupdate::ftp_setServerDirectory((char*)setSvrSdir)
{
SwapSlashes (setSvrSdir);
ftpupdate::ftp_setServerDirectory((char*)setSvrSdir);
}
One more thing...
Why are you casting setSrvDir to char *? If its not already a character pointer, might it be unicode? or some other thing? This may be a non-issue, but it raises small alarms...
Iain.
|
|
|
|