[英]C++ : Return string value through function call on a class object
我已經開始學習C ++,並嘗試在做游戲的同時進行一些令人興奮的事情。 我已經使用Mainbean和另一個類來處理我的項目(使用Netbeans)來處理一些邏輯。 在深入研究邏輯之前,我進行了測試,看是否一切都符合預期。 編譯過程沒有問題,但是當我運行項目時,我在控制台中看不到所需的文本。 我已經嘗試cout
main.cpp
以及對象類本身調用cout
,但是兩種方法都沒有運氣( getCharacterName
沒有輸出)。
如果您有時間快速看一下下面的代碼並指出正確的方向,我將非常高興。
main.cpp
#include "character/info.h"
#include <iostream>
using namespace std;
info * character;
int main() {
character = new info("PlayerName");
character->getCharacterName();
delete character;
}
info.h
#ifndef INFO_H
#define INFO_H
#include <iostream>
class info {
public:
info(std::string) {};
~info() {};
std::string getCharacterName() {};
}
#endif /* INFO_H */
info.cpp
#include <iostream>
using namespace std;
class info {
static string characterName;
info(std::string charName) {
cout<<"starting character";
info::characterName = charName;
cout<<"character made";
}
~info() {
cout<<"Object removed";
}
public: void getCharacterName() {
cout<< info::characterName;
}
};
如前所述,最后一個函數也如下所示,其中的主要是'cout':
public: std::string getCharacterName() {
return info::characterName;
}
提前致謝
// Pyracell
您在.h文件中聲明了空函數。 當您將聲明和定義分開時,您需要執行以下操作:
info.h
#ifndef INFO_H
#define INFO_H
#include <string>
class info {
public:
info(std::string);
~info();
std::string getCharacterName();
private
std::string name;
};
#endif
info.cpp
#include "info.h"
#include <iostream>
using std::cout;
info::info(std::string charName) : name(charName) {
cout<<"character made";
}
info::~info() {
cout<<"Object removed";
}
std::string info::getCharacterName() {
return name;
}
作為附帶說明,我認為有幾件事值得一提:
main.cpp
,您聲明一個全局變量來保存您的字符,這通常是我們試圖避免的事情 main.cpp
,使用new在哪里做info("MyCharacterName");
來創建角色info("MyCharacterName");
可能就足夠了 繼續從事這個項目,最好的學習方法就是一次又一次地練習...
這里有很多問題:
character
是全局character
(除非必要,請避免使用全局character
) character
分配有new
character
(盡可能使用自動存儲) {}
) info.cpp
中的getCharacterName
返回值與標頭中的返回值不同 characterName
是static
,僅出現在info.cpp
(在這種情況下,它應該是普通成員;無論如何,都需要在標頭中聲明) info.cpp
文件中,您使用class
關鍵字(它將聲明一個新的類Info
這意味着您的代碼將無法編譯或確實很奇怪),請使用info:info(std::string charName)
, info::~info()
〜info info::~info()
和std::string info::getCharacterName()
定義函數(有關詳細信息,請參見Uflex答案)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.