我有这样的结构:
struct FileData
{
string fileName;
int filePath;
string fileSize;
string fileHash;
public:
FileData (string name, int path, string size, string hash) :
fileName(name), filePath(path),fileSize(size),fileHash(hash) {}
};
当我尝试像这样初始化它时:
string name = dir[i].substr(delimiter+1);
string path = dir[i].substr(0, delimiter);
int size = FileSizeInBytes(dir[i]);
string hash = "";
FileData *sample = new FileData (name,path,size,hash);
弹出以下错误消息:构造函数“FileData::FileData”的实例与参数列表不匹配;参数类型是:(std::string, std::string, int, std::string)
备注:我已经包含了字符串标题(出于某种原因,被 <> 包围的字符串这个词没有出现在问题中)并且我有“using namespace std;”在代码的顶部。我尝试删除它并在每个字符串之前手动添加 std::,但仍然没有用。此外,我在创建结构对象之前尝试分配给变量的值是完全有效的字符串。我也试过写
string name = "something";
但是还是不行。任何帮助将不胜感激。
最佳答案
FileData (string name, int path, string size, string hash)
注意int path
,应该是std::string path
如果这是设计好的,你不能像现在那样为 path
参数传递一个 std::string
关于C++ 拒绝识别字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21812819/