写一个C++模板使用的例子
时间: 2023-09-09 17:11:39 浏览: 51
当然,以下是一个使用C++模板的简单例子:
```cpp
#include <iostream>
// 定义一个模板函数,用于计算两个数的和
template <typename T>
T sum(T a, T b) {
return a + b;
}
int main() {
int x = 5, y = 10;
double a = 3.14, b = 2.71;
// 调用模板函数并打印结果
std::cout << "Sum of integers: " << sum(x, y) << std::endl;
std::cout << "Sum of doubles: " << sum(a, b) << std::endl;
return 0;
}
```
在上述代码中,我们定义了一个模板函数`sum`,它可以接受不同类型的参数,并计算它们的和。在`main`函数中,我们分别使用整型和浮点型参数来调用`sum`函数,并打印结果。
编译并运行上述代码,输出应为:
```
Sum of integers: 15
Sum of doubles: 5.85
```
这个例子展示了如何使用C++模板来实现通用的函数或类,从而提供对不同类型的支持。模板可以根据实际参数类型进行实例化,并生成相应的代码。这种方式可以在不重复编写多个函数或类的情况下,实现对不同类型的操作。
相关问题
写一个C++函数模板偏特化的例子
下面是一个简单的 C++ 函数模板偏特化的示例,它将模板函数按照参数类型进行特化:
```c++
#include <iostream>
using namespace std;
template <typename T>
void print(T t) {
cout << "General print: " << t << endl;
}
template <>
void print<int>(int t) {
cout << "Specialized print for int: " << t << endl;
}
int main() {
print("Hello");
print(123);
return 0;
}
```
在上面的示例中,我们定义了一个模板函数 `print()`,并在其中使用了模板参数 `T`。接下来,我们定义了一个特化版本,它针对 `int` 参数进行特化,输出一个定制的消息。在 `main()` 函数中,我们分别调用了两个版本的 `print()` 函数。
输出结果如下:
```
General print: Hello
Specialized print for int: 123
```
UE5.1 写一个c++的插件例子
好的,下面是一个简单的C++插件例子,该插件可以在UE5.1中使用:
1. 创建插件
首先,在UE5.1编辑器中创建一个新的C++插件。在编辑器菜单中选择“文件”->“新建项目”,在“选择项目”窗口中选择“插件”类别,然后选择“C++插件”模板。
2. 编写代码
在创建了插件后,打开Visual Studio并打开插件的C++源代码文件。在这个例子中,我们将创建一个简单的插件,并添加一个自定义Actor类。
首先,在插件的源代码目录下创建一个名为“Actors”的文件夹。在该文件夹下创建一个名为“MyCustomActor”的C++类,它将继承自UE4中的AActor类。在该类中添加一些自定义代码,如下所示:
```
//MyCustomActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyCustomActor.generated.h"
UCLASS()
class MYPLUGIN_API AMyCustomActor : public AActor
{
GENERATED_BODY()
public:
// Sets default values for this actor's properties
AMyCustomActor();
protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;
public:
// Called every frame
virtual void Tick(float DeltaTime) override;
};
```
```
//MyCustomActor.cpp
#include "MyCustomActor.h"
// Sets default values
AMyCustomActor::AMyCustomActor()
{
// Set this actor to call Tick() every frame. You can turn this off to improve performance if you don't need it.
PrimaryActorTick.bCanEverTick = true;
}
// Called when the game starts or when spawned
void AMyCustomActor::BeginPlay()
{
Super::BeginPlay();
}
// Called every frame
void AMyCustomActor::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}
```
3. 注册插件
在UE5.1编辑器中,打开插件的源代码文件夹,并打开插件的.build.cs文件。在AddDefaultModules函数中添加“MYPLUGIN”模块,并在PublicDependencyModuleNames数组中添加“MYPLUGIN”。
```
using UnrealBuildTool;
public class MyPlugin : ModuleRules
{
public MyPlugin(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "MYPLUGIN" });
PrivateDependencyModuleNames.AddRange(new string[] { });
DynamicallyLoadedModuleNames.AddRange(new string[] { });
}
}
```
4. 编译插件
在Visual Studio中,选择“Release”或“Debug”模式,然后编译插件。如果一切正常,插件将被编译为一个DLL文件,并输出到UE5.1的插件目录下。
5. 在UE5.1中使用插件
最后,在UE5.1编辑器中启用插件。在编辑器菜单中选择“编辑”->“插件”,然后选择“已启用”选项卡,找到您的插件并启用它。之后,您将能够在UE5.1中使用自定义Actor类,以及任何其他您在插件中添加的功能。