C++ :: Destructor For Class That Holds Pointer To Object

Mar 20, 2013

Lets say we have a class that holds a pointer member to another object. If I delete that pointer in the destructor I get an error (and I understand why). My question is : is it possible to overcome that without memory leaks ?

1 #include<iostream>
2 using namespace std;
3
4 class A {
5 public:
6 ~A() {
7 cout<< "~A()" <<endl;

[Code] ....

View 5 Replies


ADVERTISEMENT

C++ :: Base Class Pointer Destructor

Aug 29, 2014

I have a query regarding virtual destructor functionality. So below is sample code:

Code:
#include<iostream>
#include<stdlib.h>
using namespace std;
class Base

Code: Base *b = d;
Here b and d now pointing to same memory location.

Now below statement:
Code: delete (b);
Here since my destructor is virtual it will call derived class and base class destructor.

Now my question is, if I use this:
Code: delete (d); // And without virtual keyword in ~Base() {} This call both derived and base class destructor.

So which one is correct form to call and why? Is delete(b) is standard in virtual function mechanism.

Output is:

D1 :: function1()
Base :: function2()
INSIDE D1 DES
INSIDE BASE DES

View 2 Replies View Related

C++ :: Vector Of Int Class - How To Delete Pointer X In Destructor To Free Memory

Feb 25, 2015

An attempt to create a class which is basically a mimic of vector<int> i don't seem to know how to delete pointer x in a destructor to free memory, also on pushback and pushfront methods, i can't free y when i implement delete[] y; y=NULL; i get some NULL out put when cout 'ing the object in main, why is that happening and how do i free memory y.

#include<iostream>
using namespace std;
class vectorOfint{
int* x;
int size;
public:
vectorOfint();

[Code] .....

View 6 Replies View Related

C++ :: Calling Defined Function Pointer From Another Pointer To Class Object?

Aug 19, 2014

I am attempting to implement function pointers and I am having a bit of a problem.

See the code example below; what I want to be able to do is call a function pointer from another pointer.

I'll admit that I may not be explaining this 100% correct but I am trying to implement the code inside the main function below.

class MainObject;
class SecondaryObject;
class SecondaryObject {
public:

[Code]....

View 10 Replies View Related

C/C++ :: Implementing Container Class That Holds Point Class

Nov 28, 2014

I have a Point class that's already implemented. My goal is to implement a container class called Line that holds the Point class. I'm not allowed to use any existing container classes for this. Here's what I'm working with:

//File: Point.h
#ifndef POINT_H_
#define POINT_H_
class Point {
public:
Point(int x = 0, int y = 0);
Point(const Point & t);
virtual ~Point() {};

[Code] ....

How I'm supposed to write Line.cpp...how do I access/add Points to Line without using something like a vector? I probably should've included what I've written so far.

#include "Line.h"
/**
* Default Line constructor
*/
Line::Line() {

[Code] ....

View 6 Replies View Related

C++ ::  Object Destructor Throwing SIGSEGV

Dec 13, 2014

I have the following code. The destructor throws a segmentation fault when it gets called. My first instinct is that there's something screwy with the array allocation.

#ifndef ARRAYLIST_H
#defineARRAYLIST_H
#include <iostream>
#include "Exceptions.h"
using namespace std;
template <class T>
class ArrayList {

[Code] .....

It's specifically the memory clearance in the destructor that throws the segfault.

View 19 Replies View Related

C/C++ :: Destructor Called Just After Declaring Object?

Jan 29, 2015

Why does the destructor is called just after declaring my object?

// MAIN

int main(void) {
Jucarie j1;
Jucarie j2(j1);
return 0;
}

THE DESTRUCTOR

Jucarie::~Jucarie() {
cout << "Destructor called" << endl;
delete[] material;
material = NULL;
}

I do not have a copy constructor, i just want to use the shallow copy. Why i get Debug Assertion Failed error? If i delete the destructor, all work fine.

I get it, the problem occurs when the material from j1 is deleted right? Because it has already been delete by j2.

View 1 Replies View Related

C++ :: Pointer Class Object Vectors

Aug 4, 2013

#include <iostream>
#include <vector>
#include <string>
#include <map>
using namespace std;
struct bop {
string realname; //real name

[Code] ....

Okay, so first thing's first. The program will not compile due to lines 39-45. If I were to change those pointers into regular objects, it will not change the values of my class object. So what is the right way to do this?

I want the user to be able to input the # of employers/programmers into the system. But I cannot do that with an array of classes because when declaring an array; the array size must be constant.

View 6 Replies View Related

C++ ::  check Pointer To Class Object For Null Value?

Feb 14, 2013

lets say I have a pointer p_unit of type c_unit* (c_unit is an a.b.c.)

I have a function that returns a pointer to a new c_unit object:

c_unit * man_add_unit() {
c_unit * local_p_unit;
unsigned short int local_run_code;
print_man_add_menu();
local_run_code = get_a_run_code(); // this bit just gets user input
switch (local_run_code)

[code]....

I assign that to p_unit, then add it to a vector v_units:

p_unit = man_add_unit();
v_units.push_back(p_unit);
cout << "New unit added.
";

The whole program runs on a loop, and another thing the user can do is to print out data on c_unit objects pointed to by v_units. The problem is, in that function up there ^ I give the user the option to go back to main menu without creating a unit.

Since "local_p_unit" is declared but not assigned an initial value, I'm guessing the function would return a "null" pointer (which is what's hanging me up). If I just let this run with the above code, and go to print out the unit data, the program crashes.

I tried to make an if thing with p_unit == 0 but this always returns false and doesn't catch the "bad" unit that will subsequently cause a crash.

Btw, I have considered assigning a reference to a generic c_unit object to that there local_p_unit so it won't return null, then remove pointers to that object from v_units at the end of the loop.. But I know there's got to be a better way.

View 4 Replies View Related

C++ :: Copy Derived Class Object Through A Pointer To Base

Jan 14, 2015

Is there a way to copy a derived class object thru a pointer to base?

For example:

class Base { public: Base( int x ) : x( x ) {}
private: int x; };
class Derived1 : public Base { public: Derived( int z, float f ) : Base( z ), f( f ) {}
private: float f;};
class Derived2 : public Base { public: Derived( int z, string f ) : Base( z ), f( f ) {}

[Code] ....

The question is whether *B[0] would be a Derived1 object and *B[1] a Derived2 object?If not, how could I copy a derived class thru a pointer to the base class?

View 1 Replies View Related

C++ :: Pass Object To Class Which Stores It In Container As Unique Pointer

Jul 24, 2013

class A (abstract)
class B : A
class C {
void add ( A(&*?) a )
std::vector<std::unique_ptr<A>> data; //unique_ptr<A> because A is abstract and therefore vector<A> isn't possible
}

upper situation. What is the best way to pass add an object of class B to C?

with C::add(A* a){ vector.push_back( unique_ptr<A>(a) ); }
and
int main() {
C c;
c.add( new B() );
}

This works, but i don't think it's very nice, because you could delete the pointer in main. What happens then with the unique_ptr? I could probably make C::add( std::unique_ptr<A> u_p ); but maybe it can be avoided that the "user" (in main() ) has to create the unique_ptr itself.

View 10 Replies View Related

C++ :: Pointer Usage To Base Class Object In Vector Int Main Function

Aug 12, 2013

I know what are pointer's and how to use them but there is one point i am not able to understand. Below is the example code

I understand everything in the below code except 1 thing why i am using pointer to base class object in vector int the main() Function?

Code:
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
using namespace std;
// base class

[Code] ...

Here is the lines of code i want to understand.

Code:
vector<Employee*> employees;
employees.push_back(&emp1);
employees.push_back(&mgr1);

I know if i will not use the pointer base class function "virtual double grossPay" will be called for both base class object and derived class object and when i will use pointer with reference to the object because base class function is virtual it will look for same function in derived class and if available it will execute it.

View 3 Replies View Related

C++ :: Prevent Destructor Delete Member Pointer From Constructor

Dec 3, 2013

I have little problem which causing memory leaks.

Parent > Multiple Child(Parent parent) > Child destructor deleting parent => next Child destructor crash

Example code: without using:

class Parent {
public:
Parent() {
for(int i = 0; i < x; ++i) {
for(int j = 0; j < y; ++j)
childs[i][j] = new Child(this);

[Code] ....

If you read code, on Parent destructor i = 0 & j = 1 its going crash.

Parent will be deleted aswell, but it give me assert: _block_type_is_valid(phead- nblockuse)

View 3 Replies View Related

C/C++ :: Class Square Composed Of Two Points - Destructor Called Twice

Nov 3, 2014

I have a class Square that is composed of two Points, I pass the former to the Square as references (second ctor) and two Points are created.

The problem is, at the end of the program, 4 Points are now being deleted which suggests that somewhere copies were made (regardless of the references) and the m_p1, m_p2 have different addresses than p1 and p2.

#include <iostream>
using namespace std;
class Point {
public:
Point();
Point(double x,double y);
double printCor() const;

[Code] .....

Even though, the objects were passed to the ctor by references, the copy constructor (compiler generated) for Point was called and now we have two points and an object square with distinct Point objects.

View 3 Replies View Related

C++ :: How To Get Object Of Original Class From Function Of Other Class Where Other Class Object Is Member Of Original Class

Jan 21, 2013

The case is like

class B{
public:
somedata;
somefunction();
}
class A{
public:
data;
function();
}

in somefunction i want a pointer to current object of class A m new to c++

View 2 Replies View Related

C++ :: Cast Base Class Pointer To Derived Class Pointer

Feb 6, 2015

I create an instance of a base class (not derived class) and assign it to base class pointer. Then, I convert it to a pointer to a derived class and call methods on it.

why does it work, if there is a virtual table?

when will it fail?

// TestCastWin.cpp : Defines the entry point for the console application.//

#include "stdafx.h"
#include <iostream>
class B
{
public:
B(double x, double y) : x_(x), y_(y) {}
double x() const { return x_; }

[Code] ....

View 14 Replies View Related

C++ :: Importance Of Static Object In A Class And How They Are Different From General Object

Dec 13, 2012

#include "B.h"
class A {
public :
A()
{
s_b = new B();
b = new B();

[Code] ....

In my project i have seen static object as above . But not able to know what is the exact use of it and how they are different from general object .

View 2 Replies View Related

C++ :: Transfer Values Set In Privates Of Base Class By Object Of One Derived Class To Another

Apr 26, 2014

I have my main.cpp like this:

#include <iostream>
#include "curve1.h"
#include "curve2.h"
using namespace std;
int main() {
Curve1 curve1Obj;
Curve2 curve2Obj;

[Code]...

Base class Score has two derived classes Curve1 and Curve2. There are two curve() functions, one is in Curve1 and other in Curve2 classes. getSize() returns the value of iSize.

My base class header score.h looks like this:

#ifndef SCORE_H
#define SCORE_H
class Score {
private:
int *ipScore;
float fAverage;
int iSize;

[Code]...

You can see that I have used curve1Obj to enter scores, calculate average and output. So if I call getSize() function with cuve1Obj, it gives the right size that I took from user in enterScores() function. Also the result is same if I call getSize() in score.cpp definition file in any of the functions (obviously).
.....

The problem is when I call curve() function of Curve2 class in main (line 23) with the object curve2Obj, it creates a new set of ipScore, fAverage and iSize (i think?) with garbage values. So when I call getSize() in curve() definition in curve2.cpp, it outputs the garbage. .....

How can I cause it to return the old values that are set in curve1.cpp?

Here is my curve2.cpp

#include <iostream>
#include "curve2.h"
using namespace std;
void Curve2::curve() {
cout << "getSize() returns: " << getSize() << endl; // out comes the garbage
}

Can I use a function to simply put values from old to new variables? If yes then how?

View 3 Replies View Related

C++ :: Using Member Function Of A Class In Another Class And Relate It To Object In Int Main

Aug 21, 2013

I am writing a program which is using SDL library. I have two different classes which one of them is Timer Class and the other is EventHandling Class.

I need to use some member functions and variables of Timer in some Eventhandling Class member functions, Although I want to define an object of Timer in int main {} and relate it to its member function that has been used in Eventhandling member function in order that it becomes easier to handle it, I mean that I want to have for example two objects of timer and two objects of Eventhandling class for two different users.

I do not know how to relate an object of a class from int main{} to its member function which is being used in another class member function.

Lets have it as a sample code:

class Timer {
private:
int x;

public:
Timer();
get_X();
start_X();

[Code] ....

View 4 Replies View Related

C++ :: Vector In Header That Holds One Of Other Classes?

Jan 10, 2015

I can not seem to add a vector to my head file. I have tried many things and can't figure it out.

Compile and Compile error -

g++ -Wextra -pedantic -std=c++11 Card.cpp Card.h Deck.h Deck.cpp unit_test1.cpp ;
Deck.h:15:27: error: invalid declarator before ‘deck’
void std::vector<Card *> deck;

[Code]....

View 2 Replies View Related

C++ :: Two Dimensional Pointer To Object?

May 24, 2012

I am migrating a scientific code from Java to C++.

What's wrong with the two functions? I can use the int** like a two dimensional array but not the Agent**.

I receive this error: "No operator = matches this operand".

(I have allocated two dimensional arrays for objectSpace and agentSpace somewhere else).

Code:
int** objectSpace;
Agent** agentSpace;
void Space::removeAgentAt(Point p) {
agentSpace[p.x][p.y] = NULL;
}
void Space::putAgentTo(Agent agent, Point newP) {
agentSpace[newP.x][newP.y] = agent;
}

View 8 Replies View Related

C :: How To Traverse Array Which Holds 3000 Numbers

Oct 23, 2013

I have this array which holds 3000 numbers and is initialized by assigning a random number to each element.

Code:
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int x[3000] = {rand()};
return 0;
}

I have to traverse this array so that each random value lies between -3000 and +3000 inclusive.I'm not sure how to traverse this, there is nothing in my notes discussing traversing.

View 4 Replies View Related

C++ :: Calling A Function That Holds Struct Arrays

May 16, 2013

In this program I am attempting to allow a user to input three different authors and then input three books they have written as well as the price. I am struggling with calling the functions and am not sure what to do.

#include <iostream>
#include <string>
using namespace std;
struct BookInfo{
string bookTitle;
double price;

[Code] ....

View 3 Replies View Related

C++ :: Pass Object As A Pointer In Function

Apr 12, 2013

i need to pass myboard.board (board is in the class Cboard and it is an array of int) to a function in a class called piece however this is troubling . i need to pass it as pointer os that i could change its value here under is my code.

main.cpp Code: #include<iostream>
#include"board.h"
#include "pieces.h"

[Code].....

View 7 Replies View Related

C++ :: Convert Pointer To Plain Object

Jul 23, 2013

I have pointer object and i have to assign to another variable ( new object ). But if i change any value in new object should not reflect in old object. I did in the below way, it changes the value.

class Test {
public:
int num;
};
Test* obj;
obj.num=1;
Test obj_n=*obj;
obj_n.num=2;

Now both object's num have value as 2;
i.e
obj.num // has 2
obj_n.num // has 2

Actually my expected result is:
obj.num - should have value 1
obj_n.num - should have value 2

My actual scenario is different where Test obj is pointer object, so obj should be pointer object. i have given sample scenario.

View 5 Replies View Related

C++ :: Assigning Address To Object Pointer

Aug 16, 2013

I have the following code.

StackElement *StackElementArray;
StackElementArray = new StackElement[iMaximumDepth];

I want to assign one element of this array StackElementArray the address of another object. For example,

voidStackMem::push(StackElement &iStackElement) {
CurrentDepth++;
StackElementArray[0] = iStackElement;
}

The StackElement class contains pointers to some dynamic arrays. When I use the assignment, StackElementArray[0] = iStackElement;, it doesn't copy the complete contents and I have to define an 'assignment operator' function to copy all the contents. I am wondering if there is a way I can assign StackElementArray[0] the pointer to the StackElement object. In that case, I will not need to copy the contents of iStackElement into StackElementArray[0] and will just copy the address.

View 3 Replies View Related







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