gpt4 book ai didi

C++ 空值和 this 指针

转载 作者:行者123 更新时间:2023-12-02 12:24:27 26 4
gpt4 key购买 nike

我是C++新手,正在尝试学习C++。我有一段 Java 代码,如下所示:

public List<String> getDiagnosticTroubleCode() {
if (diagnosticTroubleCode == null) {
diagnosticTroubleCode = new ArrayList<String>();
}
return this.diagnosticTroubleCode;
}

如何将 disgnosticTroubleCodenull 值进行比较?并将其设置为新的List。我已经重写了 std::list 以使其像 Java 中的 List 一样使用。然后我想返回对象 this 中的 diagnosticTroubleCode 字段。我希望你们能帮助我解决这个问题。尝试研究 this 指针和 null

这是我的 C++ header :

class RUNTIME_EXPORTS DiagnosticTroubleCode {
protected:
List diagnosticTroubleCode;
public:
List getDiagnosticTroubleCode();
};

最佳答案

您的代码似乎只需要实例化 diagnosticTroubleCode首次使用时。坦率地说,我觉得这有点奇怪,因为一个空的 std::list<std::string> 的实例会是相当良性的。无论如何,这是实现这一目标的一种方法。


class DiagnosticTroubleCode
{
protected:
std::unique_ptr<std::list<std::string>> diagnosticTroubleCode;

public:
std::list<std::string>& getDiagnosticTroubleCode()
{
if (!diagnosticTroubleCode)
diagnosticTroubleCode = std::make_unique<std::list<std::string>>();
return *diagnosticTroubleCode;
}
};

请注意,成员getDiagnosticTroubleCode将返回对新的(或现有的)实例化列表的引用。如果您决定放弃潜在实例化(我建议这样做),代码将变得相当简单:

class DiagnosticTroubleCode 
{
protected:
std::list<std::string> diagnosticTroubleCode;

public:
std::list<std::string>& getDiagnosticTroubleCode()
{
return diagnosticTroubleCode;
}
};

如果后者是可能的(坦率地说,我不明白为什么不可能),那么首先追求它。在上述两种情况下,成员都是通过引用返回的,而不是值或地址。这与您可能熟悉的内容非常相似。

祝你好运。

关于C++ 空值和 this 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59315224/

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