|
i want to be able to create vectors as the prgram runs, but all i can think of is something like this
<code>
void create_vector(int index)
{
if(index == 1)
vector<int>number1;
if(index == 2)
vector<int>number2;
if(index == 3)
vector<int>number3;
if(index == 4)
vector<int>number4;
if(index == 5)
vector<int>number5;
}</code>
but i want to do something like this
<code>void create_vector(int index)
{
string name;
name = "number0";
name[6] = (index + 48);
cout << name << "\n";
vector<int>name;
}</code>
thank you
|
|
|
|
|
What exactly are you trying to accomplish?
"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
|
|
|
|
|
I don't think you can assign variable names at runtime.
You could use a map to map runtime strings to a given vector (or to an index to a vector in a
list/array of vectors.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Why don't you create a vector of vectors?
For instance:
vector < vector < int > > number;
then you car reference each (inner) vector with [] operator, e.g.
number[5].push_back(11);
...
You're not creating vectors dynamically but it is not such a memory waste...
BTW you may accomplish dynamically creation with pointers, but IMHO, it is a bit involved using std::vector and pointers togheter.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
What are you trying to do? All I see is a bunch of code that does nothing accept copy “number0” to a string and the change the character “0” to character “index+48”, which assumes index is [0-9].
Neither example creates anything but temporary (stack) vectors and the second one would choke the compiler.
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence."Edsger Dijkstra
|
|
|
|
|
Hi EvryBody,
I m trying to put a hyperlink over a Balloon styled tool tip and execute a program on click of it. I am able to display the tooltip as balloon with hyperlink onit, but i m not able to click on it. when i try to get the moouse cursor over tooltip, the tool tip disappears, i tried a lot i nothing worked out.
Plz can nybody help me..
Thanks
P.Somasundaram
|
|
|
|
|
somasundaram_be wrote: I m trying to put a hyperlink...
Which is what type of control (e.g., static)?
"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
|
|
|
|
|
:(hi,
Thnk you for repling but it happens for any type of control. i m working with buttons and dialog boxes...
|
|
|
|
|
somasundaram_be wrote: i m working with buttons and dialog boxes...
So your "hyperlink over a Balloon styled tool tip" is actually a button on a dialog box?
"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
|
|
|
|
|
somasundaram_be wrote: I am able to display the tooltip as balloon with hyperlink onit, but i m not able to click on it.
Here yea go -> CPPToolTip v2.1[^]
|
|
|
|
|
Hi
I have one silly question.
I have a class
Shape
{
private:
int x, y, z;
public:
void Get(Shape& s)
{
x = s.x;
y = s.y;
z = s.z;
}
};
This code compiles fine. But how? How can I access the private memebers s.x, s.y and s.z inside Get() even if it is member function of Shape. Both this and s are two different objects how can they access private members inside the class definition? if this happens then,
int main()
{
Shape s, s1;
s.x = s1.x;
}
this should also work, right?
I am wondering why things are designed like this?
Regards
The Best Religion is Science.
Once you understand it, you will know God.
|
|
|
|
|
private effects members at the class level, not the object level.
Remember, when you declared the members as private, there was no object involved
When you are IN a member of the class (like in your Get() method) then you have access to all
the private members of that class.
From outside the class, like in your main function, you CANNOT access private members of the
class, unless main() is a friend function of the class.
Mark
"Posting a VB.NET question in the C++ forum will end in tears." Chris Maunder
|
|
|
|
|
Hi
Thank you very much for your time,
But am not still fully convinced anyway.
Regards
The Best Religion is Science.
Once you understand it, you will know God.
|
|
|
|
|
|
Private is a class scope (or meaning...) rule not an instance (or object) one.
Hence what happens inside Get method it is legal (an instance of the class can access private member of another instance of the same class). On the other hand
Zainu wrote: int main()
{
Shape s, s1;
s.x = s1.x;
}
it is INVALID because inside main you cannot access private member of (both s and s1 ) instances of the Shape class.
Hope that helps.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
|
|
|
|
|
Zainu wrote:
I am wondering why things are designed like this?
If things were not designed like this then how one can implement the copy constructor, assignment operator etc
One more pint if you remeber that if any member is used in a clss function the its gets prepent with this->. which is again the instance (object) of the class.
These are the reason why things are designed in that way. So that private member of a object can be used directly when there are used in a member fucnction.
Manoj
Never Gives up
|
|
|
|
|
Think of each class as a person.
Think of each method and variable as something that person owns.
You can assign many things different access modifiers: public, protected, private, ect.
If you make an item you own(variable or method) private or protected you don't want any other person(class) using it right? Now say you want to be nice and share, make it public and then other people(class) can use it.
Does that make it make more sense?
The only way to speed up a Macintosh computer is at 9.8 m/sec/sec.
|
|
|
|
|
ExpertComing wrote: Does that make it make more sense?
Not even to those of us that are in the know.
ExpertComing wrote: The only way to speed up a Macintosh computer is at 9.8 m/sec/sec.
This would look a lot better as:
The only way to speed up a Macintosh computer is at 9.8 m/s2.
"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
|
|
|
|
|
KISS.
Internally a class must be able to access private members of an object of the same class so that it able to copy it or swap contents with it. That is you would find if very difficult (or impossible) to write copy constructors or “=” assignment operators if objects of the same class where not friends.
The ‘main’ example you supplied is different because the assignment is being made outside of the class objects and from the out side there is no friendship.
By the way, your ‘Get’ is an assignment (or copying) method and does not get anything.
INTP
"Program testing can be used to show the presence of bugs, but never to show their absence."Edsger Dijkstra
|
|
|
|
|
I got something to work with my file output, and it all prints correctly except the 1st line
CString energyText;
which at the point I am looking at is "08MeV.dat" (confirmed!)
fstream newFile;
newFile.open (fileName, ios::out);
newFile<<'!'<
|
|
|
|
|
ldsdbomber wrote: newFile<<'!'<<energytext<<endl;< blockquote="">
Should be:
newFile << '!' << (LPCSTR) energyText << endl;
"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
|
|
|
|
|
Putting this somewhere in the code would be a better solution:
template <typename CH, typename TR>
inline std::basic_ostream<CH, TR>& operator << (std::basic_ostream<CH, TR> &os, const CString &s)
{
os << static_cast<LPCTSTR>(s);
return os;
}
Steve
|
|
|
|
|
While it is obviously a different solution, what is it that makes it better?
"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
|
|
|
|
|
DavidCrow wrote: While it is obviously a different solution, what is it that makes it better?
1. Uniformity; you write a CString to the stream in the same manner as you do for other types.
2. Safety; you can't forget the cast and get into trouble.
3. Cleanness; you don't have ugly casts scattered throughout the code but rather centralised in one place.
4. Intuitive; it just works, without any special knowledge beyond that of normal C++ streams.
Steve
|
|
|
|
|
Stephen Hewitt wrote:
1. Uniformity; you write a CString to the stream in the same manner as you do for other types.
Thanks.
"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
|
|
|
|