gpt4 book ai didi

c++ - gcc:带有 Wextra 和成员初始化的 weffc++

转载 作者:搜寻专家 更新时间:2023-10-31 00:20:02 25 4
gpt4 key购买 nike

假设我有这样一个类:

class MyClass {
private:
vector<MyOtherClass> myMember;
public:
MyClass(const YetAnotherClass& myCollection);
}

MyClass::MyClass(const YetAnotherClass& myCollection) {
myMember = convert(myCollection);
}

或者,换句话说,我有一个类,其中有一个成员,该成员转换了一些其他数据供以后使用。

现在,weffc++ 标志有助于捕获一些愚蠢的错误并使编译器更有帮助。同时,我喜欢 Wextra,因为它迫使我改正错误。

问题是代码无法编译(“MyClass::myMember 应该在成员初始化列表中初始化”),我不知道如何绕过它。我想我可以使 myMember 成为一个指针并将其设置为 NULL,但我不想那样做。我也找不到禁用警告的方法,但我也不确定这是否是个好主意。

我正在使用 GCC 4.5.2,如果它有任何不同的话。

那么,我应该怎么做呢?

最佳答案

在此实例中,您实际上并未使用成员初始化列表。

在这种情况下要使用成员初始化列表,您的构造函数实现如下所示:

MyClass::MyClass(const YetAnotherClass &myCollection) 
: myMember(convert(myCollection))
{
}

成员初始化列表是冒号后的成员变量的逗号分隔列表。多个成员初始化看起来像这样:

class MyClass
{
public:
MyClass();

private:
SomeType someMember;
SomeOtherType someOtherMember;
AnotherType anotherMember;
};

MyClass::MyClass() :
someMember(a),
someOtherMember(b),
anotherMember(5)
{}

关于c++ - gcc:带有 Wextra 和成员初始化的 weffc++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918826/

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