x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

Why can't I set a pointer to my struct?

I maintain a global list of my character data struct in my world manager class, and I'm trying to configure individual AMyCharacter actors to maintain a reference to their data:

 //AMyCharacter.cpp:
 FCharacterSheet* characterSheet;

 void AMyCharacter::BeginPlay()
 {
     Super::BeginPlay();
     characterSheet = &worldManager->characterList[0];
 }

 //AWorldManager.h:
 TArray<FCharacterSheet> characterList;


The line where I declare characterSheet has an error, "Inappropriate '*' on variable of type 'FCharacterSheet', cannot have an exposed pointer to this type". Does this mean that I'm declaring my struct wrong, or does the struct itself need some kind of special formatting to allow pointers?

Product Version: UE 4.10
Tags:
more ▼

asked Nov 15 '15 at 04:44 AM in C++ Programming

avatar image

HInoue
251 97 66 83

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

1 answer: sort voted first
more ▼

answered Nov 15 '15 at 08:58 AM

avatar image

TheJamsh
815 60 97 140

avatar image HInoue Nov 15 '15 at 09:25 AM

Oh hey, thanks for the citation. :)

That covers the definition, but when I'm trying to make this a variable to be set later (instead of a function argument), I get a different error, to wit "reference must be initialized". If I'm treating this like a pointer, shouldn't it auto-initialize to nullptr?

 UPROPERTY(BlueprintReadOnly)
 FCharacterSheet& characterSheet;
avatar image DeckleSpec Dec 23 '15 at 06:34 AM

C++ requires references to be initialized. What would an uninitialized reference be? They aren't pointers, it would be some object in an invalid state, but what would it be referencing, the best a compiler could do for you is make some stack space and call the default constructor on the uninitialized reference, but that is pretty undefined behavior, and better to throw a compiler error than let that get through. This is a language requirement in C++.

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question