c++类型无法解析错误
C++ type cannot be resolved error
我尝试在main函数中实例化一个类,像这样:
#include <iostream>
#include<vector>
#include "./repository/BookmarkRepository.h"
#include "./domain/bookmark.h"
#include <list>
#include <iterator>
using namespace std;
using namespace domain;
using namespace repository;
int main() {
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
//here comes the error
BookmarkRepository<Bookmark>* repo = new BookmarkRepository("./resources/bookmarks");
return 0;
}
这是BookmarkRepository:
#ifndef BOOKMARKREPOSITORY_H_
#define BOOKMARKREPOSITORY_H_
#include <string>
#include <iostream>
#include <iterator>
#include <list>
#include <algorithm>
#include <fstream>
#include "../domain/bookmark.h"
using namespace domain;
using namespace std;
namespace repository{
template<class Entity>
class BookmarkRepository {
std::string filename;
std::list<Entity>* entities;
public:
BookmarkRepository(std::string filename) :
filename(filename) {
loadEntities();
}
void save(domain::Bookmark b){
this->entities.push_back(b);
ofstream fout(filename.c_str(), ios::app);
fout <<b<<"n";
fout.close();
}
void update(int id,domain::Bookmark b);
void refresh();
void remove(int id);
private:
void loadEntities(){
string line;
ifstream fin(filename.c_str());
if (!fin.is_open()) {
throw "could not open file";
}
while (fin.good()) {
Bookmark b;
fin >> b;
}
fin.close();
}
};
}
#endif /* BOOKMARKREPOSITORY_H_ */
这里是书签。h
#ifndef BOOKMARK_H_
#define BOOKMARK_H_
#include <string>
namespace domain {
class Bookmark {
int id;
std::string title;
std::string address;
public:
Bookmark(int id=0, const std::string& title="", const std::string& address="") :
id(id),title(title),address(address){
}
const int getId() const;
const std::string& getTitle() const;
void setId(int id);
const std::string& getAddress() const;
void setTitle(const std::string& type);
void setAddress(const std::string& address);
friend std::ostream& operator<<(std::ostream&, const Bookmark&);
friend std::istream& operator>>(std::istream&, Bookmark&);
};
}
#endif /* BOOKMARK_H_ */
和书签。cpp
#include "bookmark.h"
#include <sstream>
namespace domain {
const int Bookmark::getId() const {
return id;
}
void Bookmark::setId(int id) {
this->id = id;
}
void Bookmark::setTitle(const std::string& title) {
this->title = title;
}
const std::string& Bookmark::getTitle() const {
return title;
}
void Bookmark::setAddress(const std::string& address) {
this->address = address;
}
const std::string& Bookmark::getAddress() const {
return address;
}
std::ostream& operator <<(std::ostream& os, const Bookmark& b) {
os << b.getId() << "," << b.getTitle() << ","
<< b.getAddress();
return os;
}
std::istream& operator >>(std::istream& is, Bookmark& b) {
using namespace std;
string line, token, title,address;
int id;
is >> line;
istringstream ss(line);
getline(ss, token, ',');
stringstream(token)>>id;
getline(ss, token, ',');
title = token;
getline(ss, token, ',');
address = token;
b.setId(id);
b.setTitle(title);
b.setAddress(address);
return is;
}
}
我收到的错误实际上更复杂:
此行有多个标记-"BookmarkRepository"前应该有","或";"-未使用的变量' repo ' [- unused-variable]无法将' int* '转换为' repository::BookmarkRepository* '初始化-"BookmarkRepository"之前的预期类型说明符-类型"BookmarkRepository"无法解析。
我讨厌c++,但是这周我有一场考试,所以如果能给我一些建议,告诉我不要做什么,以避免这类错误,我将非常感激。
需要指定模板类型:
BookmarkRepository<Bookmark>* repo = new BookmarkRepository<Bookmark>("./resources/bookmarks");
相关文章:
- 我的模板类方法返回错误类型?
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 类型为 "int*" 的参数与 C++ 中错误类型"int**"参数不兼容
- glDrawElements GL 错误类型 = 0x824c,严重性 = 0x9146,消息 = GL_INVALID
- Eclipse/CDT_C++给出"语义错误_"类型XXX无法解决"。项目运行
- turbo 为什么我的C++代码中出现错误类型名称预期"错误?
- "auto"推断出 hashtable_policy.h 中的错误类型
- 设计自己的结果/两者之一:是否应该始终指定成功类型和错误类型
- 如何修复"ctypes"。参数错误:参数 2:<键入"异常.类型错误">:RaspberryPi 中的错误类型"错误
- 在 vscode 上编译错误.类型说明符是 C++11 扩展
- 不允许使用错误类型
- 当读取错误类型时,CIN覆盖我的初始化值
- C++:"错误:类型'const char*'和'const char [28]'的操作数无效到二进制'ope
- 我的代码错误类型警告 1 警告 C4018 和更多错误
- 在shared_from_this()中的错误类型(在继承类中)(是否有dyn.type-ware shared Poi
- 为什么缩小转换范围不能防止错误类型的map.insert()失败
- 程序总是返回二进制'>>':找不到运算符,它采用错误类型的左操作数
- 错误:类型为 '.&' 来自类型的临时 '..*康斯特'
- 涉及将要馈送的向量转换为execvp的错误类型
- C++中是否存在错误类型