【问题标题】:How to make a static class to reference string variables with C++?如何使用 C++ 创建一个静态类来引用字符串变量?
【发布时间】:2019-09-11 07:54:36
【问题描述】:

所以我正在尝试制作一个只保存字符串变量的通用 C++ 静态文件。我在这个项目中使用虚幻引擎 4。 我有一个可行的解决方案,但我想看看我在 C# 中所做的事情是否可以在 C++ 中完成。

工作解决方案(C++): DFControllerGameModeBase.h

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "DFControllerGameModeBase.generated.h"


#define MoveForwardInput        "MoveForward"

实施:

#include "DFControllerGameModeBase.h" 

void ADFCharacter::Play(){
.....

string text = MoveForwardInput;

}

但这是我在 C# 中使用 Unity 所做的:

using System;

namespace Assets.Scripts.Helpers
{

    public static class Utilities
    {
        public static string MoveForward = "MoveForward";
    }
}

实施:

using Assets.Scripts.Helpers;

void Play(){

string text = Utilities.MoveForward;

}

【问题讨论】:

  • 我不知道这是否是你真正需要的,但你可以使用命名空间和枚举类来做到这一点。不会是静态变量,但会符合目的。并且您可以使用一次包含警卫或 pragma 以避免重复。
  • @Radagast 感谢您的指导,我考虑过枚举。这更像是我尝试探索 C++ 并翻译我的 C# 示例的问题
  • @sujaygchand bruglesco 的重定向链接应该是更好的选择。祝你好运!

标签: c# c++ unreal-engine4


【解决方案1】:

如果您对封装没有任何问题,并且不会在蓝图中使用静态,那么只需使用#define 即可。

您还想为#define 命名约定使用大写字母。

#define MOVE_FORWARD_INPUT "MoveForward"

但是,如果您希望将其封装并能够在蓝图中调用它。然后你必须创建一个静态帮助类。

.h
class Utilities
{
public:
    static const FString MoveForward;

    //create BP getter function here
}

.cpp
const FString Utilities::MoveForward = "MoveForward";

【讨论】:

  • 谢谢你的回答,正是我要找的东西
猜你喜欢
  • 2015-06-16
  • 2015-02-12
  • 2011-02-17
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
相关资源
最近更新 更多