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'
我在这里做错了什么?
答案 0 :(得分:5)
您不能在C ++ 03中的声明中初始化成员,除非它们是使用常量表达式初始化的静态const成员。常量表达式不能包含C ++ 03中的函数调用。
使用gcc或clang切换到C ++ 11(-std=c++11
或-std=c++0x
)或初始化CBAY_ITEM构造函数中的成员。如果有几个执行常规初始化的构造函数,则可以将公共初始化移动到辅助init方法。
class CBAY_ITEM {
std::string name;
std::string condition;
public:
CBAY_ITEM() : name(enterName()), condition(enterCondition())
{}
};
答案 1 :(得分:-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();
}
};