|
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.
|
|
|
|
|
Thanks for the info Iain.
Iain Clarke wrote: 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...
Why is that, I'm only type casting a char to a char*
Thanks again
Regards,
The only programmers that are better that C programmers are those who code in 1's and 0's
Programm3r
My Blog: ^_^
|
|
|
|
|
Hi,
I have a folder that is locked by a process in Windows.
How do I unlock the folder without killing the process??
Thanks,
Indra
|
|
|
|
|
In general you don't: what good would locking a file be if it was simply to unlock it? Everyone would simply blow away all locks before opening a file making locking useless!
Steve
|
|
|
|
|
It's not a file that I want to delete but a folder.
And the folder is empty, there are no files in it.
It has been locked uselessly by a process.
I wish to close all handles of the process that has locked this folder.
Without termintaing the process.
Please let me know if there are ways to do it.
I came across a utillity from the net that does just that, but I need the code so that the same thing can be done from our application.
|
|
|
|