C++ :: Creating Object Without Default Constructor
Jun 24, 2013
I have a question about the default constructor.
To my best understanding, the compiler will provide me with a deafult constructor only if there are no any user defined constructors, at all. Now consider the following code:
Code: class MyClass
{
private:
int m_data;
public:
MyClass(int init):m_data(init){cout<<"Ctr called"<<endl;}
[Code] ....
How is it that suddenly, there is a default constructor?
First I wrote a Binary-tree class to draw a binary tree on the window. The nodes were small circles. Then I become wanted to change the shape of the nodes from circles to triangles by another class, Binary-tree-derived which is derived from Binary-tree class. I wrote the below code to do the job but I get two errors about constructors. First, code:
/* The binary-tree class, one of the topics that has been said in Programming Principles and Practice using C++ book by Biarne Stroustrup. This code is written by R Abbasi (s.rabbasi@yahoo.com) */ #include <Simple_window.h>
[Code].....
Errors are:
Error12error C2512: 'Binary_tree' : no appropriate default constructor availablec:userscsdocumentsvisual studio 2012projects est_1 est_1 est_1.cpp91
13IntelliSense: no default constructor exists for class "Binary_tree"c:UsersCSDocumentsVisual Studio 2012Projects est_1 est_1 est_1.cpp91
How do you write a default constructor?I need to use a default constructor that will initialize the data members: - salesPerson to “Unknown” - noOfWeek to 13 - amount to point to an array of thirteen 0.00s.
This is my weeklysales class
class WeeklySales { char* salesPerson; double* amount; // Pointer to an array int noOfWeek; // Size of the array };
A compiler auto created default constructor is called a synthesized default constructor. It will initialize the built-in members to 0 or not depends on where the class object is defined? if I define a class
class point{ public: double x, y; };
if I define point point1; in global scope then point1.x and point1.y will be initialized to 0, if I define point point2; in a local scope, then its x and y won't be initialized? If it is like this, then I believe if there are built-in type members in a class, then the synthesized default constructor is almost useless!
trying to practice the object-oriented part of it by converting my java programs into c++. I believe I understand the concepts of a header file and declaring the functions in the .cpp files. I keep getting this "Undefined reference to NamedStorm::NamedStorm()" error.
NamedStorm.h #ifndef NAMEDSTORM_H #define NAMEDSTORM_H #include <string> #include <iostream> // NEVER use using namespce in header, use std instead. using std::string;
Im trying to create two box in this program using the default constructor. When i call to try and display the info, it says that x, y, and z are not declared in this scope. i wanted to have the user cin the length, height, and width using the void setBox function.
#include<iostream> #include<string> #include<cstdlib> using namespace std; class Box{ public:
I get the error at the line "ptr1 = new node;" I tried putting a default constructor for my node struct and that fixed the problem but a new problem arises. It states that i have a linker error after i compile it with a default constructor.
class Date Date(int=1, int=1, int=1990); class Person Person(string="", string="", Date=NULL); class RealEstateAgent:Public Person RealEstateAgent(string="",string="",Date=NULL,Date=NULL,int=NULL, double=0.0); }
[code]....
how can I assign default values with Customer object and RealEstateAgent?
will copy constructor does object initialization using another already created object? I understand that it can be applied for object initialization and not for assignment.Is it correct?
is it possible to get object name in the constructor? I would like to initialize an object of circle class without any arguments and put some pretty lines in constructor to get and save as table of chars the name of creating object. Is it possible? I work with MSVS2012.
Exercise 7.24: Give your Screen class three constructors: a defaultconstructor; a constructor that takes values for height and width and initializes the contents to hold the given number of blanks; and a constructor that takes values for height, width, and a character to use as the contents of the screen.
Giving the screen a default constructor was easy. The next part is probably easy aswell, I just dont understand what they mean when they say "and initalize the contents to hold the given number of blanks" and something in the 3rd part when they say "character to use as the contents of the screen".
Think I have made a breakthrough... Would the constructor for the second part look like this:
I have a program that has a base class 'control' and there are 2 dervied classes 'button' and 'textbox'. How do i make a constructor in the 'button' or 'textbox' that initializes a pointer of the data type 'control' to point to the object that invokes the constructor. the code should look like this
class control { //data } class button:public control { buton() { //code for the constructor } }
actually i have an array of pointers of the type 'control' and as soon as any instance of a control like button or textbox is created the constructor should make an element of the array to point to the instance
I am creating a Matrix class, and one of the constructors parses a string into a matrix. However, printing the result of the constructor (this->Print()) prints what I expect, and an <object_just_created>.Print() call returns bogus data. How is this even possible?
Snippets below:
Matrix::Matrix(const string &str) { // Parse a new matrix from the given string Matrix r = Matrix::Parse(str); nRows= r.nRows; nCols= r.nCols;
[Code] ....
in the driver program, here are the two successive calls
Matrix mm6("[1 2 3.8 4 5; 6 7 8 9 10; 20.4 68.2 1341.2 -15135 -80.9999]"); mm6.Print(); // mm6.Print() calls bogus data, -2.65698e+303 at each location. The matrix's // underlying array is valid, because printing the addresses yields a block // of memory 8 bits apart for each location
Write a constructor that initializes a new inventory object with the values passed as arguments, but which also includes a reasonable default value for each parameter.
class Base { char * ptr; public: Base(){} Base(char * str)
[code].....
Obj1 is a derived class object where base class char pointer is initialized with "singh" and derived class char pointer is initilized with "sunil". I want to create Obj2 out of Obj1. Separate memory should be created for Obj2 char pointer (base part and derived part as well) and that should be initialized with the strings contained in Obj1.
Here the problem is: Derived class part can be initialized with copy constructor. How to initialize the base class char poniter of Obj2 with the base class part of Obj1. char pointers in both the classes are private.
I tried using initializer list but could not succeed.