Hi, two days ago I’ve posted the same question on answerhub without any result. So i dediced to repost it here.
I’m trying to create a interface in c++ that has to be visible in Blueprints so BP actors can use it to call functions of a C++ gamemode.
To create the interface i followed Rama’s guide on the wiki.
I ended up with this code:
.h (this was a UObject child class)
#pragma once
#include "GamemodeInterface.generated.h"
UINTERFACE(Blueprintable)
class UGamemodeInterface : public UInterface
{
GENERATED_UINTERFACE_BODY()
};
class IGamemodeInterface
{
GENERATED_IINTERFACE_BODY()
//doen't compile even if I remove the tro function under this comment
public:
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Game Mode")
void EnemyKilledCallback();
UFUNCTION(BlueprintNativeEvent, BlueprintCallable,Category = "Game Mode")
void PlayerKilledCallback();
};
.cpp
#include "UntillLight.h"
#include "GamemodeInterface.h"
void IGamemodeInterface::EnemyKilledCallback()
{
}
void IGamemodeInterface::PlayerKilledCallback()
{
}
UGamemodeInterface::UGamemodeInterface(const class FObjectInizializer& PCIP) : Super(PCIP)
{
}
When i try to compile this code I always get these errors but I can’t find what is the cause:
2>D:\Develop\Unreal Projects\UntillLight\Source\UntillLight\GamemodeInterface.cpp(14): error C2511: 'UGamemodeInterface::UGamemodeInterface(const FObjectInizializer &)': overloaded member function not found in 'UGamemodeInterface'
2> d:\develop\unreal projects\untilllight\source\untilllight\GamemodeInterface.h(11): note: see declaration of 'UGamemodeInterface'
2>D:\Develop\Unreal Projects\UntillLight\Source\UntillLight\GamemodeInterface.cpp(15): error C2550: 'UGamemodeInterface::{ctor}': constructor initializer lists are only allowed on constructor definitions
2> UntillLight.cpp
2> UntillLight.generated.cpp
2>ERROR : UBT error : Failed to produce item: D:\Develop\Unreal Projects\UntillLight\Binaries\Win64\UE4Editor-UntillLight.dll
I also tried to follow visual studio advice and I’ve added the constructor declaration as follows:
new .h
#pragma once
//#include "Object.h"
#include "GamemodeInterface.generated.h"
/**
*
*/
UINTERFACE(MinimalAPI,Blueprintable)
class UGamemodeInterface : public UInterface
{
GENERATED_UINTERFACE_BODY()
UGamemodeInterface(const class FObjectInizializer & inizializer);
};
class UNTILLLIGHT_API IGamemodeInterface
{
GENERATED_IINTERFACE_BODY()
public:
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Game Mode")
void EnemyKilledCallback();
UFUNCTION(BlueprintNativeEvent, BlueprintCallable,Category = "Game Mode")
void PlayerKilledCallback();
};
Even this try ended up with a compile error:
2>D:\Develop\Unreal Projects\UntillLight\Source\UntillLight\GamemodeInterface.cpp(7): error C2664: 'UInterface::UInterface(const UInterface &)': cannot convert argument 1 from 'const FObjectInizializer' to 'const FObjectInitializer &'
2> D:\Develop\Unreal Projects\UntillLight\Source\UntillLight\GamemodeInterface.cpp(7): note: Reason: cannot convert from 'const FObjectInizializer' to 'const FObjectInitializer'
2> D:\Develop\Unreal Projects\UntillLight\Source\UntillLight\GamemodeInterface.cpp(7): note: No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
I’m running out of ideas to try what can I do?