刚看到与{C ++类和程序中的分段错误问题有关的this question。
我的问题与班级定义有关。这是发布时间:
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
必须在那里吗?
答案 0 :(得分:4)
是的,在C ++中,返回类型必须。有关C和C ++之间的比较,请参阅here。
答案 1 :(得分:3)
是的,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
答案 2 :(得分:1)
是的,他们确实必须在那里。