User Name Password Register
DaniWeb IT Discussion Community
All
What is DaniWeb IT Discussion Community?
You're currently browsing the C++ section within the Software Development category of DaniWeb, a massive community of 426,134 software developers, web developers, Internet marketers, and tech gurus who are all enthusiastic about making contacts, networking, and learning from each other. In fact, there are 1,755 IT professionals currently interacting right now! Registration is free, only takes a minute and lets you enjoy all of the interactive features of the site.
Please support our C++ advertiser: Programming Forums
Views: 2488 | Replies: 3
Reply
Join Date: Jul 2004
Posts: 1
Reputation: ihvc4 is an unknown quantity at this point 
Rep Power: 0
Solved Threads: 0
ihvc4 ihvc4 is offline Offline
Newbie Poster

pointer to member?

  #1  
Jul 13th, 2004
I have the 10 classes car and a member of this class is the integer weight
how can i create an aray of the ineger weight with ponters to that member? car
AddThis Social Bookmark Button
Reply With Quote  
Join Date: Mar 2004
Posts: 1,514
Reputation: kc0arf is a jewel in the rough kc0arf is a jewel in the rough kc0arf is a jewel in the rough 
Rep Power: 10
Solved Threads: 49
Colleague
kc0arf kc0arf is offline Offline
Posting Virtuoso

Re: pointer to member?

  #2  
Jul 13th, 2004
Hello,

If I understand you correctly, you have 10 categories (called cars), and you want to collect data on the car.

You can use a struct to handle this, or make a simple standard that says the 1 storage unit will be the 1 car class, the second storage unit the second class... and go from there.

My guess is that you are going to want to store more than the car's weight.

Make a struct

struct data
{
string carname;
int weight;
}

And then you can make an array:

struct data CarData[10];

And then you can refrence them as you need them:

CarData[3].weight= the value of the weight of the third car.

Give it a shot, and post your code to see if you have it all.

Christian
Reply With Quote  
Join Date: Aug 2004
Location: Bozeman MT
Posts: 13
Reputation: glSuccinct is an unknown quantity at this point 
Rep Power: 5
Solved Threads: 1
glSuccinct's Avatar
glSuccinct glSuccinct is offline Offline
Newbie Poster

Re: pointer to member?

  #3  
Aug 12th, 2004
Off the top of me head:
#include <iostream>
#include <conio.h>

using std::cout;
using std::endl;

struct TData
{
	float fWeight;
	float fLength;
};

typedef float (TData::*TDataFloatPointer); // pointer to member

float CalcAverage(const TData* pArray, int iSize, TDataFloatPointer p)
{
	float fAverage = 0;
	for(int i = 0; i < iSize; ++i)
	{
		float f = pArray->*p; // derefernce through the pointer to member
		fAverage += f;
		++pArray;
	}

	return fAverage/iSize;
}

void PrintArrayData(const TData* pArray, int iSize, TDataFloatPointer p)
{
	float fAverage = CalcAverage(pArray, iSize, p);

	for(int i = 0; i < iSize; ++i)
		cout << pArray++->*p << endl;

	cout << "Average:" << endl << fAverage << endl;
}

int main()
{
	const TData vData[] =
	{
		{ 1.0f, 10.0f },
		{ 2, 9 },
		{ 3, 8 },
		{ 4, 7 },
		{ 5, 6 },
		{ 6, 5 },
		{ 7, 4 },
		{ 8, 3 },
		{ 9, 2 },
		{ 10, 1 }
	};
	const NUM_DATA = sizeof(vData)/sizeof(vData[0]);

	cout << "Weights:" << endl;
	PrintArrayData(vData, NUM_DATA, &TData::fWeight); // get the pointer to member

	cout << "Length:" << endl;
	PrintArrayData(vData, NUM_DATA, &TData::fLength);

	getch();
}
Using a pointer to member construct, this will collect each member's weight or length and return an average.

Pointers to members are a niche type of programing mechanism. There are very few instances where pointers to members are even useful, but the times they are, they're invaluable. They're most useful, in my experince, in certain forms of automation, such as running the same algorithm over different members of the same type. Thus particular example could be boiled down to about 10 lines of code were I to go further w/ the pointers to members and templates, but this is a much more clear example.

Hope it helps!
-don't listen to me-
Reply With Quote  
Join Date: Aug 2004
Location: Bozeman MT
Posts: 13
Reputation: glSuccinct is an unknown quantity at this point 
Rep Power: 5
Solved Threads: 1
glSuccinct's Avatar
glSuccinct glSuccinct is offline Offline
Newbie Poster

Re: pointer to member?

  #4  
Aug 12th, 2004
Ooh, forgot to mention.

In 9 out for 10 times, if you know what types of data you're going to be working on, it's easier just to do like kc0arf said, and just dereference manually.

The only reasons for pointers to members are when you cannot guarantee that you know anything about the source objects (i.e. templates: typedef T1 (TBase:TMemberPointer), or you're running an algo on many parts of it.
-don't listen to me-
Reply With Quote  
Reply

Only community members can participate in forum threads. You must register or log in to contribute.

DaniWeb C++ Marketplace
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)

 

Thread Tools Display Modes

Similar Threads
Other Threads in the C++ Forum

All times are GMT -4. The time now is 4:39 am.
Forum system based on vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
©2003 - 2008 DaniWeb® LLC