头文件中的函数参数"未在此范围内声明"
Function parameter 'was not declared in this scope' in the header file
我在其中一个头文件 (C++) 中声明函数时遇到问题,文件的外观如下:
#ifndef MACTRANSFERINCLUDE
#define MACTRANSFERINCLUDE
#ifdef USE_MAC
#include <string>
#include <boost/shared_ptr.hpp>
using namespace std;
boost::shared_ptr<wstring> browseFolder();
boost::shared_ptr<vector<wstring>> getFilesInDirRecursiveImplementation(boost::shared_ptr<vector<wstring>> dirs, boost::shared_ptr<vector<wstring>> files);
#endif
#endif
在构建项目(在XCode中为Mac OSX)时,我得到"'dirs'没有在此范围内声明"。
如果我也声明了一个函数
boost::shared_ptr<vector<wstring>> foo();
我收到错误"函数调用无法出现在常量表达式中"。我对C++不是很熟悉,所以任何帮助将不胜感激。
您需要包含标头<vector>
#include <vector>
也许这是错误的原因。
我认为声明之间没有太大区别
boost::shared_ptr<wstring> browseFolder();
和
boost::shared_ptr<vector<wstring>> foo();
所以编译器应该发出错误
"函数调用不能出现在常量表达式中"。
也是第一次声明。
唯一的区别是使用第二个声明vector
未声明。至少看不到它在标头中声明的位置。
使用指令也是一个坏主意
using namespace std;
我会删除它并写
boost::shared_ptr<std::wstring> browseFolder();
boost::shared_ptr<std::vector<std::wstring>> getFilesInDirRecursiveImplementation(boost::shared_ptr<std::vector<std::wstring>> dirs, boost::shared_ptr<std::vector<std::wstring>> files);
另一个原因是您可能需要在符号之间插入一个空白>>
boost::shared_ptr<std::vector<std::wstring> > dirs
似乎确实有一个旧的编译器,它不对模板参数声明中>>
的符号对使用新语法。因此,您必须在这两个符号之间插入一个空白> >
相关文章:
- 错误:未在此范围内声明'reverse'
- 错误:"imread"未在此范围内声明
- 未在此范围内声明错误 'xy'
- Socklen_t未在此范围内声明
- 错误:'[' 之前预期的非限定 id 和错误:'users'未在此范围内声明
- "Main"已在当前范围内声明
- c++ 变量在宏的扩展中没有在这个范围内声明
- C++ 在编译过程中 strtok 函数 Eclipse 说没有在范围内声明?
- 'num1'未在此范围内声明
- 如何找到在本地范围内声明的变量的地址?
- NT状态未在此范围内声明
- 变量未在此范围内声明 数组线性搜索
- 包含文件中的 Typdef "未在此范围内声明"
- 'ClassName'和'ClassInstance'未在此范围内声明
- C++ 中的类之间的数据重新循环 - 错误:'<class name>'未在此范围内声明
- 代码作为 C 文件工作,但不作为C++文件,错误:'__builtin_types_compatible_p'未在此范围内声明
- 如何修复错误:"vreinterpretq_u32_f64"未在此范围内声明 - 在Android上使用Eigen构建
- 如何修复C++中的"arrStud未在此范围内声明"错误
- 错误:"SHGetKnownFolderPath"未在此范围内声明
- 错误:'Sprite'未在此范围内声明