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

标签 c++ gcc

假设我有一堂这样的课:

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/

相关文章:

c++ - 无法创建表示安全或可标志的类

c++ - 如何在 Ubuntu 上的 c++ 应用程序中正确链接 Graphviz

c++ - C/C++ 内存占用,每个源文件

c++ - 消除未使用的虚函数

c++ - 链接时优化和内联

c - 声明带有存储类说明符但没有类型说明符的变量是什么意思?

c++ - C++中计算耗时,非阻塞,无线程

c++ - 在内存中缓存位图数据时发生错误分配错误

c++ - 难道我们不必将函数的返回值分配给变量吗? C/C++

gcc - 在 gcc 中同时使用静态和动态链接库