Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

Simple Class Question

Posted on 2009-04-08
3
Medium Priority
?
193 Views
Last Modified: 2012-05-06
Hello,

I am an experienced VB.NET programmer, trying to get a handle on C++ (console only, not Visual C++).  I am having a problem with using classes.

In VB.NET you can globally declare an instance of a class that's not initialized.   Then, later on, when an event occurs you can initialize it.  (e.g. MyString = New String)  It will then execute the code in the constructor.

How can I accomplish this in C++?

Thanks,
-Torrwin


int _tmain(int argc, _TCHAR* argv[])
{
	//Declare a global instance of the File class
         File myFile;
 
	cout << "Please select one of the following options:\n";
	cout << "1) Setup a File\n";
	
	cin >> iChoice;
 
	if (iChoice == 1) 
	{
                  //This next line doesn't work in C++, what should it be?
	         myFile = New File;
	}
	else
	{
		cout << "Invalid choice.\n";
	}
 
	return 0;
}

Open in new window

0
Comment
Question by:Torrwin
  • 2
3 Comments
 
LVL 86

Accepted Solution

by:
jkr earned 2000 total points
ID: 24098856
In your cade, you would use the 'new' operator along with a pointer, e.g.
int _tmain(int argc, _TCHAR* argv[])
{
        //Declare an instance of a File class pointer
         File* myFile;
 
        cout << "Please select one of the following options:\n";
        cout << "1) Setup a File\n";
        
        cin >> iChoice;
 
        if (iChoice == 1) 
        {
                  
                 myFile = new File;
        }
        else
        {
                cout << "Invalid choice.\n";
        }
 
        delete myFile; // required to not create memory leaks
 
        return 0;
}

Open in new window

0
 
LVL 86

Expert Comment

by:jkr
ID: 24098892
BTW, see also http://www.cplusplus.com/doc/tutorial/dynamic/ for more on that issue.
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 24099749
Make sure to initialize the pointer to 0 when declaring it. Or, in jkr's code, the delete at the end of main might cause unexpected results.
0

Featured Post

[Webinar] Cloud Security

In this webinar you will learn:

-Why existing firewall and DMZ architectures are not suited for securing cloud applications
-How to make your enterprise “Cloud Ready”, and fix your aging DMZ architecture
-How to transform your enterprise and become a Cloud Enabler

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Unlike C#, C++ doesn't have native support for sealing classes (so they cannot be sub-classed). At the cost of a virtual base class pointer it is possible to implement a pseudo sealing mechanism The trick is to virtually inherit from a base class…
This article will show you some of the more useful Standard Template Library (STL) algorithms through the use of working examples.  You will learn about how these algorithms fit into the STL architecture, how they work with STL containers, and why t…
The viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.
Suggested Courses
Course of the Month12 days, 16 hours left to enroll

971 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question