如何修复错误C4930:'AMyStaticMeshActor a(void)':未调用prototyped函数(是一个变量定义?)

时间:2015-06-23 14:26:57

标签: c++

我无法理解,当我想用​​AMyStaticMeshActor类型初始化对象时如何修复错误:

AMyStaticMeshActor a();

错误是:

  

错误C4930:'AMyStaticMeshActor a(void)':未调用prototyped函数(是否为变量定义?)

MyStaticMeshActor.h:

#pragma once

#include "Engine/StaticMeshActor.h"
#include "MyStaticMeshActor.generated.h"

/**
 * 
 */
UCLASS()
class MYGAME_API AMyStaticMeshActor : public AStaticMeshActor
{
    GENERATED_BODY()


public:
    AMyStaticMeshActor();
    AMyStaticMeshActor(FVector location);

    // Called when the game starts or when spawned
    virtual void BeginPlay() override;

    // Called every frame
    virtual void Tick(float DeltaSeconds) override;

    UPROPERTY(EditAnywhere, Category = General)
        TSubclassOf<class AActor> WhatToSpawn;

    UPROPERTY(Category = Block, VisibleDefaultsOnly, BLueprintReadOnly, meta = (AllowPrivateAccess = "true"))
    class UBlueprint* Crystal;

};

MyStaticMeshActor.cpp:

#include "MyGame.h"
#include "MyStaticMeshActor.h"


AMyStaticMeshActor::AMyStaticMeshActor() {

}

AMyStaticMeshActor::AMyStaticMeshActor(FVector location) {

}

// Called when the game starts or when spawned
void AMyStaticMeshActor::BeginPlay()
{
    Super::BeginPlay();

}

// Called every frame
void AMyStaticMeshActor::Tick(float DeltaTime)
{
    Super::Tick(DeltaTime);

}

如何解决此问题?

2 个答案:

答案 0 :(得分:3)

这称为most vexing parse

AMyStaticMeshActor a();

这不会创建一个名为a的{​​{1}}类型的变量,它会声明一个名为AMyStaticMeshActor的函数,它返回a并且不带参数。

要解决此问题,只需删除括号:

AMyStaticMeshActor

答案 1 :(得分:0)

您的变量定义被视为名为AMyStaticMeshActor a; AMyStaticMeshActor a{}; //or in C++11 的函数,不带参数并返回a。要使用默认构造函数创建变量,可以使用以下命令:

AMyStaticMeshActor