C++ class
A blueprint that creates a C++ class in the common include/ + src/ layout. It asks for two values: the class name and the namespace.
Config
Section titled “Config”module.exports = { blueprints: [ { title: "C++ class", variables: [ { key: "name", prompt: "Class name" }, { key: "ns", prompt: "Namespace" }, ], snippets: { header: `#pragma once
namespace {ns.snake} {
class {name.pascal} {public: void run();};
} // namespace {ns.snake}`, source: `#include "{ns.snake}/{name.pascal}.hpp"
namespace {ns.snake} {
void {name.pascal}::run() {}
} // namespace {ns.snake}`, }, structure: { folders: [ { name: "include", folders: [ { name: "{ns.snake}", files: [{ name: "{name.pascal}.hpp", snippet: "header" }], }, ], }, { name: "src", files: [{ name: "{name.pascal}.cpp", snippet: "source" }], }, ], }, }, ],};An include guard would need an uppercase form of the name, so the header uses #pragma once.
-
Right-click the project root in the Explorer and choose Run Blueprintor….
-
Select C++ class.
-
Enter
http clientas the class name, thenmy appas the namespace.
Result
Section titled “Result”Directorymy-project
Directoryinclude
Directorymy_app
- HttpClient.hpp
Directorysrc
- HttpClient.cpp
#pragma once
namespace my_app {
class HttpClient {public: void run();};
} // namespace my_app#include "my_app/HttpClient.hpp"
namespace my_app {
void HttpClient::run() {}
} // namespace my_appThe class name uses {name.pascal}, the namespace and its folder use {ns.snake}. One blueprint creates files in two different folders, and the #include path always matches the folder it points to.