0

I have a parent class and two child classes that inherit from the parent class. The parent class has a protected pointer to something, and a method to access that pointer.

class parent{
public:
	int* accessPtr(){
		return ptr;
	}
protected:
	int* ptr;
};
class child1 : public parent{
public:
	child1(int* somevalue){
		//initializes ptr to somevalue, a pointer to something stored elsewhere
	}
};
class child2 : public parent{
public:
	child2(){
		//initializes ptr using new
	}
	~child2(){
		delete ptr;
	}
};

int main(){
	child2* instance = new child2();
	instance->accessPtr();	//this line is where my debugger stops
}

Naturally, my code compiles, and it even runs when I don't call accessPtr() on anything. Any ideas?

2
Contributors
4
Replies
5
Views
8 Years
Discussion Span
Last Post by Zcool31
0

Without having lookin so closely at your code shouldnt
child2->accessPtd() be
instance->accessPtr()
instead?

0

Good point, though that mistake only appears in the code I typed here, not in my source. Edited.

0

It is somewhat difficult to know what you have in real code,
like your comment
//initialize ptr using new

Do you actually do this?

If you supply your full sourcecode it will be easier to help you

0

Sorry to all for making this topic, turns out I had forgotten to pass a value for the pointer to my constructor, and it was getting initialized to NULL (thanks to the default value I put there myself), and SIGSEGV is G++'s way of saying I tried to deref null.

to monkey_king: the header file for the classes is about 100 lines long, the .cpp file is 300 lines long, and of course the pointer is to another class which I implemented, which is another 70 or 80 lines. Therefore, I tried to narrow my source code to just the part that was giving me trouble.

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.