Thread: Array of structs Problem

  1. #1
    Registered User
    Join Date
    Sep 2006
    Posts
    25

    Array of structs Problem

    I don't think I've learned how to access all of an array of structs (that have pointers) through a member function. So, I'm trying to output all of the array's struct pointer to data , but I cant seem to figure out how to make the function call. So, how would I go about fixing this problem? thnx

    main.cpp
    Code:
    #include <iostream>
    #include "func.h"
    using namespace std;
    
    int main(int argc, char * argv[])
    {
    	int n = atoi(argv[1]);
    	utree * forest = new utree[n];
    	
    	forest.printArray(); // NOT the right call :/
    
    	return 0;
    }
    func.h
    Code:
    struct node
    {
    	int data;
    	node * parent;
    	node();
    	node ( int, node * );
    };
    
    class utree 
    {
    public:
    	void printArray(int);
    	int find(int);
    private:
    	node * root;
    };
    func.cpp
    Code:
    #include "func.h"
    #include <iostream>
    using namespace std;
    
    /*Construtors*/
    node::node(){data = -1; parent = NULL;}
    node::node(int n, node * link){data = n; parent = link;}
    
    
    void utree::printArray(int n)
    {
    	for(int i = 0; i < n; i++)
    	{
    		cout << this[i].root->data;
    	}
    }

  2. #2
    Hurry Slowly vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,794
    in main
    Code:
    	for(int i = 0; i < n; i++)
    	{
    		forest[i].print();
    	}

    in class
    Code:
    void utree::print()
    {
    	if(root)
    	{
    		cout << root->data;
    	}
    }
    your class is only one member of array - it does not know about over members

    if you want a class that "knows" about collection of trees - you need to write a class
    "forest" that will store the array (or better vector) of trees and will have possibility to printArray

    As a side not - I hope you just skipped when posting required functions like constructor/destructor and operator= of your tree class and not missing them
    All problems in computer science can be solved by another level of indirection,
    except for the problem of too many layers of indirection.
    David J. Wheeler

  3. #3
    Registered User
    Join Date
    Sep 2006
    Posts
    25
    Quote Originally Posted by vart View Post
    your class is only one member of array - it does not know about over members

    if you want a class that "knows" about collection of trees - you need to write a class
    "forest" that will store the array (or better vector) of trees and will have possibility to printArray

    As a side not - I hope you just skipped when posting required functions like constructor/destructor and operator= of your tree class and not missing them
    Ya, I was kinda thinking of how it wasn't going to work, thnx. I didn't skip over those functions heh... I just started writing this I haven't wrote anything for a while :/ so i cant really remember much atm
    Last edited by I BLcK I; 02-23-2008 at 01:22 AM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Problem with copying a string into array in a struct
    By JFonseka in forum C Programming
    Replies: 15
    Last Post: 05-04-2008, 05:07 AM
  2. Problem with file and array
    By paok in forum C Programming
    Replies: 5
    Last Post: 05-01-2008, 04:19 AM
  3. Class Template Trouble
    By pliang in forum C++ Programming
    Replies: 4
    Last Post: 04-21-2005, 04:15 AM
  4. Array of Structs question
    By WaterNut in forum C++ Programming
    Replies: 10
    Last Post: 07-02-2004, 02:58 PM
  5. Quick question about SIGSEGV
    By Cikotic in forum C Programming
    Replies: 30
    Last Post: 07-01-2004, 07:48 PM