是否可以像在Java中那样从C++中的静态方法返回一个对象?我这样做:
class MyMath {
public:
static MyObject calcSomething(void);
private:
};
Run Code Online (Sandbox Code Playgroud)
我想这样做:
int main() {
MyObject o = MyMath.calcSomething(); // error happens here
}
Run Code Online (Sandbox Code Playgroud)
MyMath类中只有静态方法,因此实例化它没有意义.但我得到这个编译错误:
MyMath.cpp:69:错误:在'.'之前预期的primary-expression 代币
我究竟做错了什么?我是否必须实例化MyMath?如果有可能,我宁愿不要.
Pau*_*aul 74
用::而不是.
MyObject o = MyMath::calcSomething();
当您在没有该类对象的情况下调用该方法时,您应该使用::符号.您也可以通过类对象或指向它们的指针调用静态方法,在这种情况下,您应该使用通常.或->表示法:
MyObject obj;
MyObject* p = new MyObject();
MyObject::calcSomething();
obj.calcSomething();
p->calcSomething();
Run Code Online (Sandbox Code Playgroud)
Joh*_*sch 12
我究竟做错了什么?
您只是使用不正确的语法... ::运算符(范围解析运算符)是您访问不同命名空间中的类或成员的方式:
int main() {
MyObject o = MyMath::calcSomething(); // correct syntax
}
Run Code Online (Sandbox Code Playgroud)
我是否必须实例化MyMath?
没有.