1
class CBAY_ITEM
{
public:

    string name = enterName();
    string condition = enterCondition();

};

当我编译时,它给出了 4 个错误,它们说

1.a function call cannot appear in a constant-expression

2.ISO C++ forbids initialization of member 'name'

3.making 'name' static

4.invalid in-class initialization of static data member of non-integral type 'std::string'

我在这里做错了什么?

4

2 回答 2

5

您不能在 C++03 中的声明中初始化成员,除非它们是使用常量表达式初始化的静态 const 成员。常量表达式不能包含 C++03 中的函数调用。

切换到 C++11(-std=c++11-std=c++0x使用 gcc 或 clang)或初始化 CBAY_ITEM 构造函数中的成员。如果您有多个执行通用初始化的构造函数,则可以将通用初始化移动到辅助 init 方法。

class CBAY_ITEM {
  std::string name;
  std::string condition;
public:
  CBAY_ITEM() : name(enterName()), condition(enterCondition())
    {}
};
于 2013-04-28T00:42:12.710 回答
-1

你想在你的类中初始化这些值吗?使用构造函数。

#include <string>
std::string enterName();
std::string enterCondition();
class CBAY_ITEM
{
public:
  std::string name;
  std::string condition;
  CBAY_ITEM() {
    name = enterName();
    condition = enterCondition();
  }
};
于 2013-04-28T00:40:45.027 回答