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