在c++中调用类中的函数

calling a function within a class in c++?

本文关键字:函数 调用 c++      更新时间:2023-10-16
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'

我做错了什么??

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

切换到c++ 11 (-std=c++11-std=c++0x与gcc或clang)或初始化CBAY_ITEM的构造函数中的成员。如果你有几个构造函数来执行共同的初始化,你可以把共同的初始化移到一个helper init方法中。

class CBAY_ITEM {
  std::string name;
  std::string condition;
public:
  CBAY_ITEM() : name(enterName()), condition(enterCondition())
    {}
};

要在类中初始化这些值吗?使用构造函数

#include <string>
std::string enterName();
std::string enterCondition();
class CBAY_ITEM
{
public:
  std::string name;
  std::string condition;
  CBAY_ITEM() {
    name = enterName();
    condition = enterCondition();
  }
};