最長的Hello, World!(C++)
#include <iostream>
#include <string>
#include <vector>
#include <memory>
#include <random>
_<typename T>
class Node
{
public:
T data;
std::shared_ptr<Node<T>> next;
Node(const T &value) : data(value), next(nullptr)
{}
};
_<typename T>
class LinkedList
{
public:
LinkedList() : head(nullptr)
{}
void append(const T &value)
{
auto newNode = std::make_shared<Node<T>>(value);
if (!head)
{
head = newNode;
} else
{
auto current = head;
while (current->next)
{
current = current->next;
}
current->next = newNode;
}
}
void print() const
{
auto current = head;
while (current)
{
std::cout << current->data;
if (current->next)
{
std::cout << " ";
}
current = current->next;
}
std::cout << "";
}
private:
std::shared_ptr<Node<T>> head;
};
class MessageBuilder
{
public:
MessageBuilder()
{
list.append("Hello,");
list.append("World!");
}
LinkedList<std::string> getMessage()
{
return list;
}
private:
LinkedList<std::string> list;
};
class Printer
{
public:
Printer() : messageBuilder()
{}
void printMessage()
{
try
{
LinkedList<std::string> messageList = messageBuilder.getMessage();
messageList.print();
} catch (const std::exception &e)
{
std::cerr << "Error printing message: " << e.what();
}
}
private:
MessageBuilder messageBuilder;
};
class Application
{
public:
Application() : printer()
{}
void run()
{
printer.printMessage();
}
private:
Printer printer;
};
int main()
{
Application app;
app.run();
return 0;
}