刚刚看到this question与C++类和程序中的分段错误问题有关。

我的问题与类定义有关。这是它发布时的样子:

class A {
    int x;
    int y;

    public:
    getSum1() const {
        return getx() + y;
    }

    getSum2() const {
        return y + getx();
    }

    getx() const {
        return x;
    }
}

到目前为止,关于该问题的答案都未提及方法的返回类型。我希望它们的定义像
int getSum1() const { ....
int getSum2() const { ....
int getx() const { ....
int是否必须存在?

最佳答案

是的,int必须存在。原始代码示例无效(因为其他人提到,该代码可能最初是C而不是C++)。首先,类声明需要使用终止分号来进行编译。 g++报告:

foo.cpp:3: note: (perhaps a semicolon is missing after the definition of ‘A’)

添加分号,我们得到:
class A {
  int x;
  int y;

public:
  getSum1() const {
    return getx() + y;
  }

  getSum2() const {
    return y + getx();
  }

  getx() const {
    return x;
  }
};

仍然失败。 g++将报告以下内容:
foo.cpp:8: error: ISO C++ forbids declaration of ‘getSum1’ with no type
foo.cpp:12: error: ISO C++ forbids declaration of ‘getSum2’ with no type
foo.cpp:16: error: ISO C++ forbids declaration of ‘getx’ with no type

关于c++ - 类中的C++方法定义是否必须指定返回类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3928076/

10-17 01:40