我想通過另一個類的構造函數傳遞一個類的引用實例。現在我不能這樣做,因爲我陷入了語法錯誤。我嘗試了幾個小時,但我學到了很多東西(比如循環依賴或前向聲明),但實際上並不能解決我的問題。我有這樣的文件:被類構造函數和初始化列表困惑,懷疑循環依賴
Project.h(Project類的構造函數傳遞的緩衝區類的一個實例參考)
Project.cpp
Buffer.h
Buffer.cpp
abo有四個文件在我的問題中是積極的(我的猜測)。
這裏是Project.h內容:
#include<string>
#include<regex>
#include<iostream>
#include<vector>
#include "Buffer.h"
using namespace boost::filesystem;
#ifndef PROJECT_H
#define PROJECT_H
class Project(Buffer & buffer_param) : bufferObj(buffer_param)
{
Buffer& bufferObj;
public:
Filer& filer;
std::string project_directory;
void createList(std::vector<std::string> list_title);
};
#endif
這裏是project.cpp內容:
#include<string>
#include<regex>
#include<iostream>
#include<vector>
#include<boost\filesystem.hpp>
#include "Project.h"
using namespace boost::filesystem;
void Project::createList(std::vector<std::string> list_title)
{
//this->filer.createFile();
}
Buffer.h
#include<string>
#include<map>
#ifndef BUFFER_H
#define BUFFER_H
class Buffer
{
std::map<std::string, std::string> storage_str;
void setValueString(std::string key, std::string value);
std::string getValueString(std::string key);
};
#endif
Buffer.cpp
#include<string>
#include<map>
#include "Buffer.h"
void Buffer::setValueString(std::string key, std::string value)
{
this->storage_str[key] = value;
}
問題:
,而沒有經過緩衝的項目構造,一切完美,但只要我開始通過它的一個實例,錯誤拋出:
Project.h
文件的所有錯誤:
error C2143: syntax error : missing ')' before '&'
error C2143: syntax error : missing ';' before '&'
error C2079: 'Buffer' uses undefined class 'Project'
error C2059: syntax error : ')'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2530: 'buffer_param' : references must be initialized
error C2143: syntax error : missing ';' before ':'
error C2448: 'bufferObj' : function-style initializer appears to be a function definition
錯誤的Project.cpp
文件:
error C2027: use of undefined type 'Project'
see declaration of 'Project'
'類項目(緩衝液buffer_param)'!?一個構造函數(帶或不帶init.list)與全班一樣 – deviantfan 2015-03-31 23:01:59
有什麼問題?是的(我更新了這個問題,不得不在項目類的文件中輸入錯誤) – 2015-03-31 23:03:23
正如我剛剛添加的,你將混淆/混合構造函數與整個類。構造函數是一個類方法,類似於createList – deviantfan 2015-03-31 23:04:37