【问题标题】:C++ Arrays Compile Time ErrorC++ 数组编译时错误
【发布时间】:2012-07-08 04:56:13
【问题描述】:

我正在开发一个 C++ 项目。在使用 Java 之后,我正在自学 C++。代码:

#include <iostream>
#include <string>

using namespace std;
class dayType
{
private:
    string day;
    string week[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};


public:
    dayType()
    {
        day = "Monday";
        dayID = 0;
    }
};

还有更多的公共函数,但我把它们省略了,因为它们在这里并不重要。数组存在编译时错误。它说它是“无法解析标识符:周”、“意外令牌:{”和“意外令牌:}”。有人可以解释为什么会这样吗?如果我将其声明为“字符串周 [7];”然后在函数中定义实际值,它工作正常,但这很痛苦。

【问题讨论】:

  • 您正在使用 Java 语法来初始化字符串数组 week[]
  • “定义函数中的实际值......很痛苦” - 为什么?非本地化成员变量初始化是没有意义的,因此您必须同时查阅声明和构造函数才能找到非默认值....
  • Lion 提到的内容在 C++11 中是有效的。

标签: c++ arrays


【解决方案1】:

据我所知,这在 C++ 中是不可能的。你到底想做什么?在 C++ 中,OOP 不会像在 Java 或 C# 中那样强加给您。

另请注意,您的函数名称与您的类名称不同。这意味着省略返回类型将导致编译器错误[感谢 Aditya Kumar 指出它不会导致 void 返回类型]

【讨论】:

  • 如果函数不是构造函数,则在 C++ 中省略返回类型是错误的。
【解决方案2】:

您正在寻找的 C++ 功能是“静态类成员”。语法如下:

#include <iostream>
#include <string>

using namespace std;
class dayType
{
private:
    string day;
    static string week[];

public:
    void Project113()
    {
        day = "Monday";
        dayID = 0;
    }
};


// Note that if the class definition is in a .H file, the following line should
// appear in exactly one .CPP file.
string dayType::week[] = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};

【讨论】:

  • 我不太确定。我认为在这种情况下,他只是对如何在 C++ 中利用 OOP 感到困惑。这似乎根本不是好的设计。
猜你喜欢
  • 2023-04-01
  • 1970-01-01
  • 2016-11-26
  • 1970-01-01
  • 1970-01-01
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
相关资源
最近更新 更多