可继承单例模板类,测试
This commit is contained in:
parent
53b888b24b
commit
fa0770dfae
@ -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;
|
||||
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
file.close();
|
||||
}
|
||||
|
||||
|
BIN
TdGame/SDL2.dll
Normal file
BIN
TdGame/SDL2.dll
Normal file
Binary file not shown.
BIN
TdGame/SDL2_image.dll
Normal file
BIN
TdGame/SDL2_image.dll
Normal file
Binary file not shown.
BIN
TdGame/SDL2_mixer.dll
Normal file
BIN
TdGame/SDL2_mixer.dll
Normal file
Binary file not shown.
BIN
TdGame/SDL2_ttf.dll
Normal file
BIN
TdGame/SDL2_ttf.dll
Normal file
Binary file not shown.
@ -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>
|
||||
|
@ -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
24
TdGame/game_manager.h
Normal 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
|
@ -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
32
TdGame/manager.h
Normal 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
|
Loading…
Reference in New Issue
Block a user