如何将值存储在我的类私有数组中?C++11.

How can I store values in my class private array? c++11

本文关键字:数组 C++11 我的 存储      更新时间:2023-10-16

我有看起来像这样的东西

class RestaurantCheck
{
  private:
  static const int MENU_LENGTH = 10;
  static const string menu[MENU_LENGTH] = {"Gumbo", "Shrimp", etc...}

马上,我有一个问题。我知道我不能像现在这样初始化数组中的数据,所以我尝试了这个......

class RestaurantCheck
{
  private:
  static const int MENU_LENGTH = 10;
  static const string menu[MENU_LENGTH]; 
  void displayMenu();
  public:
  void showMenu()
  {
    RestaurantCheck thisMenu;
    thisMenu.displayMenu();
}
void RestaurantCheck::displaymenu()
{
 menu[0] = "Shrimp"
 menu[1] = "Gumbo"
 etc...
 cout << menu[0]
 etc...

但是,我也无法像那样将数据存储在数组中。我到底应该如何在这个数组中存储数据?作为赋值的一部分,数组必须是 const 静态的,它必须是私有的,displayMenu 也必须是私有的,由公共函数调用。

我希望我得到的是清楚的,如果没有,我会尝试提供更多信息。

编辑:我无法编辑教师源文件中的任何内容。源文件已经创建,他将使用自己的(提供的)来测试我的类文件和头文件。因此,它需要在源文件之外启动。

你和

之前的许多人一样陷入了同样的陷阱。你的数组是 const 的,所以它在声明时必须初始化。但是你不能在类主体中初始化静态字符串数组。你是做什么工作的?你在外面初始化它!

喜欢这个:

在您的 .h 文件中:

static const std::string menu[10];

在.cpp文件中:

const std::string RestaurantCheck::menu[10] = {"Shrimp", "Calamari", "Listeria"};

这是你要找的吗?

您可以初始化静态非标量成员,但这必须在类外部完成:

#include <string>
class RestaurantCheck{
    static const int MENU_LENGTH = 3;
    static const std::string menu[MENU_LENGTH];
};
const std::string RestaurantCheck::menu[RestaurantCheck::MENU_LENGTH] = {"Gumbo", "Shrimp", "Jar" };

注意 "init 行"必须只存在于一个文件中,最好的位置是编译为 Object 的.cpp文件。我的意思是:

restaurantcheck.h   - RestaurantCheck header
restaurantcheck.cpp - RestaurantCheck implementation (best place for "init line")
main.cpp            - program (where main() is located)