繁体   English   中英

为什么我不能在没有括号的情况下使用我的 class?(在 C++ 中)

[英]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。

  • 我使用 Xcode。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM