[英]Why I can't use my class without parenthesis?(in C++)
//this is main.cpp
#include <iostream>
#include "Cook.hpp"
using namespace std;
int main(void){
int l = Cook.get_life();
}
//this is cook.hpp
#ifndef HUNTER_H
#define HUNTER_H
class Cook
{
public:
int get_life(void);
private:
int life;
};
#endif
//this is cook.cpp
#include "Cook.hpp"
int Cook::get_life(void)
{
life=0;
return life;
}
它们都在同一个文件夹中。 运行 main.cpp 时出现编译错误。 并且 Xcode 建议使用 Cook().get_life() 而不是 Cook.get_life()。 你能解释一下为什么吗? 我想我应该使用 Cook.get_life。
get_life
不是 static function,您必须在 class Cook
的实例上调用它,而这正是Cook()
所做的。 如果你想在没有Cook
实例的情况下调用get_life
,你应该这样声明你的 function :
static int get_life(void);
然后这样称呼它:
Cook::get_life();
The thing is you can't use class attributes from static member functions, so instead you need to instantiate your class Cook
before calling your member function.
Cook c = Cook(); // Cook().get_life() works to, but you don't keep your newly created object
c.get_life();
首先,您必须声明类型为 class (实例)的变量,然后您可以使用它,但是类也有static
函数,这意味着您可以使用 ZC1C425268E68385D1AB5074C17A94F14 函数,这意味着您可以使用 ZC1C425268E68385D1AB5074C17A94F14的 class,阅读更多关于类的概念和更多...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.