可继承单例模板类,测试

This commit is contained in:
sjm 2024-06-10 16:51:09 +08:00
parent 53b888b24b
commit fa0770dfae
10 changed files with 85 additions and 2 deletions

View File

@ -60,10 +60,12 @@ void test_csv()
std::stringstream str_stream(str_line);
while (std::getline(str_stream, str_grid, ','))
{
std::cout << str_grid << std::endl;
std::cout << str_grid << " ";
}
std::cout << std::endl;
}
file.close();
}

BIN
TdGame/SDL2.dll Normal file

Binary file not shown.

BIN
TdGame/SDL2_image.dll Normal file

Binary file not shown.

BIN
TdGame/SDL2_mixer.dll Normal file

Binary file not shown.

BIN
TdGame/SDL2_ttf.dll Normal file

Binary file not shown.

View File

@ -119,17 +119,24 @@
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<AdditionalIncludeDirectories>..\ThirdParty\cJSON\include;..\ThirdParty\SDL2\include;..\ThirdParty\SDL2_gfx\include;..\ThirdParty\SDL2_image\include;..\ThirdParty\SDL2_mixer\include;..\ThirdParty\SDL2_ttf\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
<AdditionalLibraryDirectories>..\ThirdParty\SDL2\lib\x64;..\ThirdParty\SDL2_gfx\lib\x64;..\ThirdParty\SDL2_image\lib\x64;..\ThirdParty\SDL2_mixer\lib\x64;..\ThirdParty\SDL2_ttf\lib\x64;..\ThirdParty\cJSON\lib\x64;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalDependencies>SDL2.lib;SDL2main.lib;SDL2_gfx.lib;SDL2_image.lib;SDL2_mixer.lib;SDL2_ttf.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="main.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="game_manager.h" />
<ClInclude Include="manager.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>

View File

@ -13,10 +13,21 @@
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="头文件\manager">
<UniqueIdentifier>{f50376ab-e971-4317-8a3c-da0f2703263e}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="main.cpp">
<Filter>源文件</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="game_manager.h">
<Filter>头文件\manager</Filter>
</ClInclude>
<ClInclude Include="manager.h">
<Filter>头文件\manager</Filter>
</ClInclude>
</ItemGroup>
</Project>

24
TdGame/game_manager.h Normal file
View File

@ -0,0 +1,24 @@
#pragma once
#ifndef _GAME_MANAGER_H_
#define _GAME_MANAGER_H_
#include "manager.h"
class GameManager : public Manager<GameManager>
{
friend class Manager<GameManager>;
public:
protected:
GameManager()
{
}
~GameManager()
{
}
};
#endif

View File

@ -1,7 +1,14 @@
#include<iostream>
#include "manager.h"
#include "game_manager.h"
int main()
{
GameManager* instance = GameManager::instance();
std::cout << "Hello World!" << std::endl;
return 0;
}

32
TdGame/manager.h Normal file
View File

@ -0,0 +1,32 @@
#pragma once
#ifndef _MANAGER_H_
#define _MANAGER_H_
template <typename T>
class Manager
{
public:
static T* instance()
{
if (!manager)
manager = new T();
return manager;
}
private:
static T* manager;
protected:
Manager() = default;
~Manager() = default;
Manager(const Manager&) = delete;//删除拷贝构造函数
Manager& operator=(const Manager&) = delete;//删除赋值操作符
};
template <typename T>
T* Manager<T>::manager = nullptr;
#endif