• 0

[C++] How to Create Instance of another class?


Question

I am new to C++, and I am making a simple RPG game. I have an 'Item' class, which has properties and methods that all items will have. I need to be able to:

a) Inherit from this class to make a class with the item properties and methods, along with new ones

b) Make a new instance of this class in my main class. For example in vb.net:

Class MainClass

dim sword as new ItemClass

End Class

I have tried the following in C++:

new ItemClass sword;

However this gives me the error:

error C2061: syntax error : identifier 'ItemClass'

so it isn't recognising the other class? Thanks for any help :)

6 answers to this question

Recommended Posts

  • 0
it is more like

ItemClass *sword;

sword = new ItemClass();

Thanks, but I still get the same errors (plus errors saying 'sword' is an undeclared identifier)

The Item.h file is in the same projet, but do I need to reference it in any way at the start of my main class file? (and the code is meant to be in th .h rather than the .cpp file right?) Or when I created this file/ object, what type should I have chosen? (C++ class, or just C++ file?)

Also, for the sake of gaining a better understanding, what does the asterix * mean?

Thanks again

  • 0

To create a new instance of a class, you do this:

MyClass NewClassInstance;

If you want to create more than one, you can do this:

MyClass *NewClassInstances = new MyClass[500];

You can essentially treat classes as if they were ints or floats, similar syntax.

In your case, you have created a base item class. You said you wanted to inherit from it in order to create new items. I'm not sure if what you said is what you meant to do, but I'll show you a quick example of what that would be:

//This is your base item class
class Item {

int cost;
char[50] name;
int arbitraryValue;
// etc.

}

class HealingItem : public Item {

// Inherits from Item, can be used just like Item

}

Now when you do this, you can do something rather nifty.

Since all HealingItem's inherit from BaseItem, you can actually use them as such. Here's an example:

Item *MyItem = new HealingItem;

This may seem a bit odd, but in your game you may want to loop through all of the items and rather than having a separate loop for each item type, you can have all of them in one big Item array.

I hope that helps =)

EDIT: The * denotes a pointer. If you haven't looked at C++ pointers yet, I strongly recommend you go do this now as they are very very important.

  • 0

About creating instances, note that how you do it depends on if you want to create it on the stack or the heap.

If you create it on the heap, that would be the object* obj = new object(); syntax or object* obj = new object("123") if its constructor took some arguments. If it's rather on the stack (this is pretty common to do too), then it's instead simply object obj; or object obj("123"); if it had a constructor taking some arguments.

Things on the heap needs to be explicitly freed by you at a later point with delete obj;. Creating object instances on the heap is therefore useful if you want to at a later point (like in another function, or to set an object's state as a member variable) access the object, because the compiler won't automatically free it. Creating object instances on the stack make them automatically be freed at the exit of the function they were created in, or the class they were created in, in case of a member variable.

If you create it on the heap, you get a pointer reference to it, and can interact with the object either by typing obj->someFunction(); or by using the "*" dereferencing operator for something like (*obj).someFunction;.

Note that "*" can mean both "this type is a pointer" and "dereference this pointer" depending on how it's used. obj* pointer; is a declaration of a pointer named "pointer", and int i = *pointerToInt; is dereferencing the pointer "pointerToInt" to retrieve the int value it points to and store it in the variable "i".

This "duality" detail puzzled me with C++ for way too long. :p The "->" operator was invented as "syntactic sugar" in C++ so you won't have to do like the ugly above with (*obj).someFunction and it's rarely used like that.

If you create it on the stack, you however don't have a pointer to the object, but can interact with it directly. So then you would instead type obj.someFunction();

Allocating things on the stack is typically faster than allocating on the heap, so it's recommended to do that instead of creating stuff on the heap if you only need to use the variable in a function anyway.

Edited by Jugalator
This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • The Vibe Coding Playbook: Building Your Tech Business with AI —was $35, now FREE by Steven Parker Claim your complimentary copy (worth $35) of "The Vibe Coding Playbook: Building Your Tech Business with AI" for free, before the offer ends on June 23. Description A detailed and up-to-date walkthrough for entrepreneurs with limited (or non-existent) coding skills who want to build profitable software companies using new gen-AI tools. In The Vibe Coding Playbook: Building Your Tech Business With AI, renowned AI and data science educator Siraj Raval walks you through exactly what you need to do to build a technology business with generative AI-powered code assistants. Raval offers step-by-step guidance for non-technical professionals and entrepreneurs interested in creating scalable, profitable enterprises without spending years learning how to code. This book conceives of new artificial intelligence tools, like Cursor, as “co-founders,” lighting your way to constructing valuable software products and services. You’ll learn to build minimally viable products (MVPs), iterate on your software products as you develop and after launch, and grow your company while maintaining a lean, efficient, solopreneur-focused structure. Inside the book: Detailed guidance for entrepreneurs interested in creating powerful tech solutions for niche problems and markets without hiring expensive software developers Strategies for using generative AI tools to substitute for traditional technical co-founders Illustrative case studies from real-world founders who built successful technology businesses without learning to code Useful tools for non-technical entrepreneurs, including prompt libraries, decision trees, QR codes linking to video tutorials demonstrating key techniques, and access to an exclusive online community of like-minded founders Perfect for ambitious professionals and entrepreneurs who want to build a successful technology company now – using commercially available AI tools – The Vibe Coding Playbook is your personal roadmap to creating useful and profitable software for customers without learning how to code. How to download for free Please ensure you read the terms and conditions to claim this offer. Complete and verifiable information is required in order to receive this free offer. If you have previously made use of these offers, you will not need to re-register. Was $35, but is now FREE | Below free offer link expires on June 23. The Vibe Coding Playbook: Building Your Tech Business with AI The below offers are also available for free in exchange for your (work) email: The Vibe Coding Playbook: Building Your Tech Business with AI ($35 Value) FREE - Expires 6/23 The Persuasion Engine: How Any Business Can Use AI-Powered Neuromarketing to Understand and Win Customers ($28 Value) FREE - Expires 6/24 How to Do More with Less: Future-Proofing Yourself in an AI-driven Economy ($28 Value) FREE - Expires 6/30 Cloud Security Fundamentals: Building the Foundations for Secure Cloud Platforms ($131.95 Value) FREE - Expires 7/1 The Complete Free AI Learning: Master ChatGPT, Claude, Gemini & More ($21 Value) FREE How to Build an AI Design Workflow with Gamma ($21 Value) FREE The Ultimate Linux Newbie Guide – Featured Free content Python Notes for Professionals – Featured Free content Learn Linux in 5 Days – Featured Free content Quick Reference Guide for Cybersecurity – Featured Free content We post these because we earn commission on each lead so as not to rely solely on advertising, which many of our readers block. It all helps toward paying staff reporters, servers and hosting costs. Other ways to support Neowin The above deal not doing it for you, but still want to help? Check out the links below. Check out our partner software in the Neowin Store Buy a T-shirt at Neowin's Threadsquad Subscribe to Neowin - for $14 a year, or $28 a year for an ad-free experience Disclosure: An account at Neowin Deals is required to participate in any deals powered by our affiliate, StackCommerce. For a full description of StackCommerce's privacy guidelines, go here. Neowin benefits from shared revenue of each sale made through the branded deals site.
    • Rockstar confirms Grand Theft Auto VI pre-orders begin next week, unveils cover art by Pulasthi Ariyasinghe The release date of Grand Theft Auto VI has moved quite a lot since its original announcement in 2023, but it finally looks like the game has found its final launch slot. Rockstar today had a new video upload on its YouTube channel, and while it wasn't a new trailer for the game, the company revealed two things. This was the pre-order kickoff date for Grand Theft Auto VI as well as the game's official cover art. The company revealed that June 25 is when fans of the series will be able to pre-order their copy of Grand Theft Auto VI. Pre-orders will be available both digitally and in retail stores. The newly unveiled cover art shows off the two new protagonists, as well as a few more characters that are probably vital to the campaign storyline. Shots of vehicles players can use like a light helicopter, motorcycle, sports car, and speed boat are also seen here, alongside a shot of a crocodile. "Jason and Lucia have always known the deck is stacked against them," says Rockstar describing the campaign's protagonist duo. "But when an easy score goes wrong, they find themselves on the darkest side of the sunniest place in America, in the middle of a conspiracy stretching across the state of Leonida — forced to rely on each other more than ever if they want to make it out alive." Grand Theft Auto VI is coming to Xbox Series X|S and PlayStation 5 on November 19, 2026. A PC version has not been confirmed yet, though it's expected by many to land after the console release. When asked about this, the Take-Two CEO says it considers the core audience for the Grand Theft Auto franchise to be on consoles.
  • Recent Achievements

    • Week One Done
      Huge Trailer earned a badge
      Week One Done
    • Week One Done
      Classifyskilleducation earned a badge
      Week One Done
    • One Month Later
      eurospharma62 earned a badge
      One Month Later
    • Week One Done
      With What earned a badge
      Week One Done
    • Week One Done
      Harris Gilbert earned a badge
      Week One Done
  • Popular Contributors

    1. 1
      +primortal
      552
    2. 2
      +Edouard
      169
    3. 3
      PsYcHoKiLLa
      72
    4. 4
      Michael Scrip
      64
    5. 5
      ATLien_0
      64
  • Tell a friend

    Love Neowin? Tell a friend!