C++ :: Container Of Hierarchy Of Objects

Apr 25, 2014

How do we design a container of objects all of which belong to some subclass which directly/indirectly inherits from a given parent class? Moreover, I would like to have functions that enable me to pick only objects of a certain class type from the container.

For example if the parent class is A and I have a hierarchy of classes that derive from it, we must have a container that can contain any class that exists in this hierarchy. Also, get_B() must be able to let me examine only those objects in this container that inherit (directly/indirectly) from class B (class B exists in the hierarchy rooted at A).

Preferably, we would like to avoid downcasting. Or even explicit typechecking of any sort.

View 8 Replies


ADVERTISEMENT

C++ :: Storing Objects Of Hierarchy In A Vector

Jun 6, 2012

I have a hierarchy of Actions (NonMovingActions and MovinActions each with sub-hierarchies). Actions class has an abstract function.

Code:
class Action {
public:
Action(Agent& agent, ...):agent(agent),..{}
virtual ~Action(void);
virtual bool run()=0;

[Code]...

It appears that C++ does not allow this (in Java it was possible). Compiler objects that Action class is abstract (and cannot be instantiated?!)

Code: error C2259: 'Action' : cannot instantiate abstract class

1- May I know what do I not understand here? We cannot refer to sub-class instances with a reference of parent class type?

2- Should I use vector of pointers instead or what?

View 6 Replies View Related

C/C++ :: Container To Store Objects Under (unique) ID

Jun 14, 2014

I searching for a container/collection, that can access very fast to objects with the associated id.

Arrays are a bad idea, because it can be that I must store objects with a big id for example 9394034, so the array would be to big.

View 7 Replies View Related

C++ :: Game Design Practice For Accessing Container Of Game Objects

Dec 21, 2014

I'm working on my first video game. So far I have a few classes in the game starting with the Game class which includes a list of GameObjects (another class). There are several classes that inherit from GameObjects used to implement things like bullets, explosions, various enemy types, etc.

The game essentially iterates through the list of GameObjects to update/render them. I would like to provide access to the Game's list of GameObjects inside another class (like the Bullet class) so I can put new objects on the list. For example, when a bullet hits, I want to add an explosion to the Game's GameObject list it can be updated/rendered.

How this should be setup? I was considering adding a pointer to the Game or GameObject list to the GameObject class (and methods to access it), but I was wondering if there is a better way to set this up?

View 4 Replies View Related

C++ :: Payroll System - Visualizing Hierarchy

Apr 27, 2014

I have been given a HW to write code for a payroll system. The base class would be Employee. There are four types of employees.

1 - Salaried (fixed salary, no matter the hours)
2 - Hourly (overtime [>40 hours] pays time and half)
3 - Commissioned (paid percentage of sales)
4 - Base-plus-commissioned (base salary + percentage of sales)

Also add a private data member birthDate (a Date object) and departmentCode, an int to class Employee.

1 - Is the following hierarchy that I'm visualizing right? Or is a change needed?

Here is the link: [URL] ....

2 - In hourly, what does in round brackets mean? What is meant by "pays time and half"?

3 - In base-plus-commissioned, is it required to take "base salary" from user or I just get salary from the salaried employee?

View 5 Replies View Related

C/C++ :: Finding The Right Class Hierarchy Implementation?

May 29, 2013

code:

    class BM_FONT_CALL BMfont  {
    public:  
    BMfont();
    ~BMfont();  
    bool Load(const std::string& fontName);
    void Print(float x, float y);  
    class BM_FONT_CALL BMstring : public std::string
 
[code]....

How can I do `BMstring` have an access to `BMfont`'s members, as if `BMstring` will not inherit `BMfont`'s members? For example, if I do this:

    BMfont::BMstring text;
    text.scale //I don't want this  

What I want to do here is, I want the `BMstring::Compile()` to have an access to `BMfont` with no any instance of `BMfont` inside `BMstring`.

Or what if I do this:

    class BM_FONT_CALL BMstring : public std::string {  
        std::function<void (void)> func;  
    public:  
        BMstring() { func = BMfont::Compile(); }  
    }  

By making the `Compile()` member of `BMfont`.But this won't compile. How can I achieve this?

View 2 Replies View Related

C++ :: Obtaining Pointers To Represent Each Branch In Hierarchy?

Aug 24, 2014

My program has a large version of this, where every leaf class is singleton, and pointers of the base class to represent each possible path are stored in a map during compile time. I have it working as follows:

#include <iostream>
#include <string>
#include <map>

[Code].....

But System::initializePrototypes() is constructing the map manually, and I want to use recursion somehow, because my hierarchy is much bigger than this. It's also easy to miss a path doing it the above way, and when new classes are added to the hierarchy, it will be a nightmare to update the map. So the ideal solution is recursion constructing the map perfectly--and when new classes are introduced, nothing needs to be added to System::initializePrototypes().

View 7 Replies View Related

C++ :: How To Change Hierarchy Without Passing Root Element

Aug 6, 2013

I got a mesh which has an edge with a specific transformation (translation + orientation). When this configuration / transformation is changed, its neighbours are to be updated. This structure is kept inside a tree so that when a root "frame" is passed to a method like UpdateHierachy, the mesh will recursively update itself.

If, I don't pass this method the root element, which is in my case, how do I change the rest of the structure? The reason to do this is because I want to say move the door, the windows and furniture will move along with it.

View 8 Replies View Related

C :: How To Create Double Link List For 2 Level Hierarchy

Jun 11, 2014

I have to create a 2D link list with 2 level hierarchy

some thing like that

Code:
head nodes level 1: 0 1 2
/| / /|
Sub node level 2: 0 1 2 0 1 0 1 2
Real Data under |
each sub node: |

int **join=Null;
int unique = 0;
int col;
int ptr;
int *tmp_perm=Null;
int col_elem;

I know how to deal with 1 level link list structure. But i don't know how to access, delete, nodes and sub nodes from this 2 level hierarchy. C

View 4 Replies View Related

C/C++ :: Objects Hold References To Other Objects?

Nov 12, 2014

This has been bothering me for a while now, and I finally put together an example:

#include <iostream>
#include <string>
using namespace::std;

[Code]....

In the code above, the two classes hold pointers to each other, and that's fine but it doesn't seem right since C++ prefers to pass by reference. Yes, it can still do that (see testbox and testball) but even that seems odd to me because still you need to use pointer notation for the enclosed object. Am I the only one who feels this way, and should I just get over it? Or am I missing something that would allow an object to hold a reference?

View 4 Replies View Related

C++ :: What STL Container Should Be Used For Inventory

Mar 27, 2014

So I'm writing an RPG and I'm in need of an inventory system. Of course as an relatively old member of the forum I know best than just come here and ask so I've already researched quite a bit and I've formulated this idea.

I've kind of conceptualized it like so: I'll have some sort of STL container of a unique_ptr of my base item class. There will be derived item classes. Taking advantage of polymorphism I can then call the new Derivedclass when inserting it in the STL container.

My questions are: What STL container should be used for the inventory(fixed sized)?

View 2 Replies View Related

C++ :: What Is Container Class

Sep 22, 2013

What is container class? what its advantage ?

View 2 Replies View Related

C++ :: Which Std Container To Choose

Sep 16, 2012

I have a pile of data, which i need to access frequently and fast. One entry consists of two unsigned ints, let`s call them source and destination.

One source can have several destinations, but this rarely ever happens. Several sources can have the same destination - this happens more frequently, but still scarcely.

Once the data is set up, it rarely ever changes - yet it should be possible to add or remove entries.

I now need to find all sources for a given destination, or all destinations for a given source.

The question: which stl container to choose?

I have tried a multimap, using the source as key. This works good for finding all d for a given s, but is inefficient in the other direction.

Do you think it would be more efficient to have two multimaps, sorted respectively by source and destination?

View 1 Replies View Related

C++ :: Multilevel Dynamic Container

Mar 6, 2013

I am trying to come up with a way to make use of a "multilevel dynamic" container. I am parsing a file to grab some pieces of data. Lets say the first field of data I find I push into an array. At the same time lets I wish to create 2 cascaded sublevels. So an element in Modules is a pointer to the Types vector associated with that module and each element in Types is a pointer to a vector of Data. This concept should be similar to memory paging.

/*
Modules Types Data
____ _____ ______
|____|------> |_____| ---------->|______|
|____| |_____| |______|
|____| |_____| |______|
|____|
|____|
|____| _____ ______
|____|------> |_____|----------->|______|
|____| |_____| |______|
*/

Obviously this becomes very hair quickly so it is obvious that I need to dynamically create and destroy vectors (if I do it this way). Should I just create pointers using the new operator?

Here is some of my code if it is even worthwhile to read:

class Parser {
//storage arrays
vector <string> modules;
vector <string> terminal_type;
vector <string> tag_type;
vector <string> data;

[Code] ....

parse this stuff and nicely organize it.

If you take the first one, "max_logvar" is a module so everything between < and > is associated with that module.

symb is unimportant for now.

then "proterm" is a "module type" so then module now needs a module type container but I may have more than one of those.

so then I break it down by "Input" and "Output" where each of those can have the integer values (just in an array where each position will be set) that are in the fields to the right.

View 1 Replies View Related

C++ :: Deleting Object From A Container?

Nov 21, 2013

I have a container in c++11 and i must delete first object and i don't know how...

for (const prob& p : *static_cast<vector<prob>*>(list.listData)){
// i must delete the first object
}

View 2 Replies View Related

C++ :: Relation Between A Container And Allocator

Mar 30, 2014

To my understanding, a Container should have an Allocator member data, which is used internally.

Question: what happens, for example, when we swap() two containers that use different allocators?

Must the allocators be swapped as well?

Must all elements of the container be reallocated when the allocator is changed?

View 7 Replies View Related

C++ :: Bidimensional Array Container

Jun 24, 2013

I need to create an array container with the same structure as double myA [100][100];. But I cannot declare it as array<double, 100, 100> myA; however I do need this container for its format. How can I make it work.

View 6 Replies View Related

C++ :: How To Create A Container Class

Feb 9, 2013

I know that it's a class that contains data from another class I just do not know how to make them both work together.

View 1 Replies View Related

C++ :: Building A Typeless Container?

Jun 14, 2013

i built a programming language called jade that right now can only print. i want to add variables to it however. I am going to use a modified bajarne stroustrop calculator to handle expressions (ie will now include string manipulations and such), but I want to build a var class into the program to make it easier for the program. i want variables to act like python variabes, and arrays to act like python associative arrays. Ive scoured different containers, but they only work if the variable isnt an array in my language, because it will only have one type. the only thing i can come up with is a union and 4 overloaded = operators (for bool, int, double, and string) is there a better way to do this?

View 2 Replies View Related

C++ :: How To Properly Iterate Over A Container

Oct 31, 2013

so i have a container called Source that is of type std::map<std::string, std::vector<std::string>> but when I try to print it with this function:

void Lexer::PrintSource()
{
for(auto Iterator = this->Source.begin(); Iterator != this->Source.end(); Iterator++)
for(auto SubIterator = Iterator->begin(); SubIterator != Iterator->end(); SubIterator++)
cout<< *SubIterator << endl;
}

i get these errors:

Lexer.cpp: In member function 'void Lexer::PrintSource()':
Lexer.cpp:29:42: error: 'struct std::pair<const std::basic_string<char>, std::vector<std::basic_string<char> > >' has no member named 'begin'
for(auto SubIterator = Iterator->begin(); SubIterator != Iterator->end(); SubIterator++)
^
Lexer.cpp:29:76: error: 'struct std::pair<const std::basic_string<char>, std::vector<std::basic_string<char> > >' has no member named 'end'
for(auto SubIterator = Iterator->begin(); SubIterator != Iterator->end(); SubIterator++)
^

View 6 Replies View Related

C++ :: How To Delete A Container From A Deposit

Nov 23, 2013

I have a deposit of containers and i must delete the cats container. How i can do that?

#include <iostream>
#include <string>
#include <vector>
using namespace std;
struct Cat {
string name;
int age;

[Code] .....

View 2 Replies View Related

C++ :: Array Container For Loop?

May 13, 2014

I want to find all instances of a substring mysub in array container myarr and replace each occurrence of mysub with empty string " ". To do that, I'd like to use for loop with search algorithm.

Code below:

p=array iterator
for ( p=search(myarr.cbegin(),myarr.end(), mysub.begin(),mysub.end();
p!=myarr.end();
p=search(p,myarr.end(),mysub.begin(),mysub.end() ); {

[Code] ......

View 2 Replies View Related

C++ :: Accessing A Table By Container

Jun 30, 2014

I need a "meaningful" way of accessing a table, the column is representing Err magnitude, and the row is representing Rate magnitude. For each error magnitude and rate magnitude, i define an action magnitude, which is the contains of the table. For example,

Code:
int matrix[10][10];
int Action1 = matrix[0][0];
int Action2 = matrix[0][1];

However, i need a better way of getting matrix[0][0], row and col itself is meaningless. I want to access the table like

"Action magnitude" = matrix["Rate magnitude 1"]["Err magnitude 2"]; using a string instead of int id.

How to easily do this in c++ container?

View 4 Replies View Related

C++ :: Best Std Container Class For Application?

Jan 16, 2012

I have a class called CTestObject and it has one variable int id. I want to add instances of this to an std container and be able to:

1. quickly determine if the value of "int id" exists in the container and update the object

or

2. add a new object to the container

Which std container is the best for this application? What method should I use to search the container for the object id?

View 14 Replies View Related

C++ :: STL Container And Algorithm Requirements

Feb 21, 2012

How do you find, when you first introduced with say some of the STL container, function or algorithms, what are its requirements? I mean,

1. what operators object should have for specific container?
2. what function args and type it should return for a algo?
3. when extending some container like with custom allocator, char_traits...and what not, what methods should be overridden? What work should they do?

View 7 Replies View Related

C++ :: Std Container Iterators - Category?

Jun 15, 2014

When using an iterator with a std container (list / vector etc) sometimes it's possible to modify the container (e.g. delete an item) yet still carry on using the iterator - whereas in other cases, modifying the container immediately invalidates any open iterators on it. Is there an easy way to know which containers fall into which category? (or does it vary from one compiler to another?)

View 2 Replies View Related







Copyrights 2005-15 www.BigResource.com, All rights reserved