簡體   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