嘿,夥計們我試圖編寫一個包裝類在c + +中的文件處理,我試圖在visual-C++中使用「屬性」助手。我剛開始創建一個屬性,試圖測試它,但它給了我一個警告。
這裏是我的FileEngine.h文件:
無法用類屬性代碼定義編譯C++
#ifndef _FILEENGINE_HPP
#define _FILEENGINE_HPP
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class FileEngine
{
public:
__declspec (property (put = setFileName, get = getFileName)) string filename;
void setFileName(string);
string getFileName();
FileEngine();
~FileEngine();
};
#endif
這裏的FileEngine.cpp: 的#include 「FileEngine.hpp」
FileEngine::FileEngine() {}
FileEngine::~FileEngine() {}
void FileEngine::setFileName(string flname)
{
if (filename != "")
filename = flname;
}
std::string FileEngine::getFileName()
{
if (filename == "")
return NULL;
else
return filename;
}
這是爲主。 cpp file: #include「FileEngine.hpp」
int main()
{
FileEngine *file;
file = new FileEngine();
file->filename = "example.dll";
cout << file->filename << endl;
return 0;
}
這是我編譯時得到的警告。
警告C4717:「FileEngine的getFileName ::」:對所有控制路徑遞歸函數會導致運行時堆棧溢出
有人能解釋我爲什麼這個警告就要到了,我應該怎樣做才能解決這個問題?這將是很大的幫助,因爲當我運行它,stackoverflow確實發生和exe停止工作。
我知道這並不能解決您的問題,而是一個更好的想法是要注意首先使用屬性。 – OMGtechy
'getFileName'在它引用'filename'時調用它自己。有你的遞歸。 –
也不要導入整個std命名空間。 –