本文介绍了声明一个接受构造函数参数的成员变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 // In A.h
 class A
 {
  public:
    enum eMyEnum{ eOne, eTwo, eThree };
  public:
    A(eMyEnum e);
 }

 // In B.h
 #include "A.h"
 class B
 {
    B();
    private:
       A memberA;
 }

 // In B.cpp
#include "B.h"
 B::B(void) : memberA(A::eOne)
 {}

memberA的声明给我一个使用g ++编译器的编译错误:
错误:'A :: eOne'不是类型

The declaration to 'memberA' gives me a compile error using the g++ compiler:error: 'A::eOne' is not a type

如何克服这个问题?我只需要创建一个不带参数的默认构造函数?

How can I overcome this? Do I simply need to create a default constructor that takes no parameters?

推荐答案

这听起来像是试图初始化一个成员变量。你可以这样做:

It sounds like you are trying to initialise a member variable. You could do something like:

class B
{
public:
    B() : memberA(A::eOne) {}  // Initializer list in constructor
private:
    A memberA;
};

这篇关于声明一个接受构造函数参数的成员变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-22 19:22