gpt4 book ai didi

c++ - 使用指针和 const 方法的类

转载 作者:行者123 更新时间:2023-11-30 04:59:25 29 4
gpt4 key购买 nike

假设我们有 T 链表的类。(我不知道代码是否真的有效)

template <typename T>
struct List{

struct Node{
T data;
Node *next;
};

// add, remove etc...

Node *locate(const T &a) const{
for(Node *node = head; node; node = node->next)
if (node->data == a)
return node;

return nullptr;
}

private;
Node *head;
};

如果你检查方法locate,它基本上会破坏链表,即使方法被标记为const

我刚注意到别的东西。由于 Node 不是常量,因此 Node::data 也可以更改。

假设这是程序员的错误,是否有 C++ 方法可以避免这种情况?

I know the method can be written as this.

    const Node *locateConst(const T &a) const{
for(const Node *node = head; node; node = node->next)
if (node->data == a)
return node;

return nullptr;
}

最佳答案

您正在寻找一项实验性功能,但在许多平台上都不可用。如果你的标准库支持,你可以使用 std::experimental::propagate_const<node*>而不是裸露的原始指针。 https://en.cppreference.com/w/cpp/experimental/propagate_const同时,您可以实现您自己的(可能不太通用)版本。

关于c++ - 使用指针和 const 方法的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51230450/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com