在C++中,我正在尝试学习如何实现链表。我有一个定义颜色的类,并希望在我的节点结构中引用该类的特定元素。以下语法是否正确?
//Create a class for colors
class Color
{
public:
int red;
int green;
int blue;
int alpha;
};
//Create an object to reference the color class
Color colorObject;
//Create a node struct
struct Node
{
Color colorObject.red;
Color colorObject.green;
Color colorObject.blue;
Color colorObject.alpha;
Node *next;
};
template <typename T>
struct Node
{
T payload;
Node *next;
};
Node<Color> oneColorNode;
oneColorNode.payload.red = 0xff;
使用模板,我们能够使用任何类型的有效负载参数化通用 Node 类,如您的示例。
调整代码以符合您的意图的最简单方法是进行以下更改:
struct Node
{
Color data;
Node *next;
};
现在假设您有一个名为 the_node
的Node
实例,并且您想访问其中包含的Color
数据的元素,那么您可以执行以下操作:
std::cout << the_node.data.red;
这将打印存储在Node
data
成员中的红色成员的值Color
。如果您想搜索它但不知道那里的那些.
的名称,请搜索"c ++ 成员访问运算符"。
请注意,我们这里的链表实现仅适用于 Color
类型的数据,如果您想创建一个更通用的链表类,可以使用任何类型的数据,那么您需要使用模板,请查看 AlexanderVX 的答案以获取详细信息。