在VC++中使用模板时发生C4430错误
C4430 error when using templates in VC++
我对C++模板没有太多经验;遇到问题。也许,你可以看到我犯的愚蠢的错误。谢谢你的帮助!
常数.h:
#include "stdafx.h"
#include <io.h>
#include <sstream>
class Constants
{
public:
[...]
template<typedef const T>
static CString ToString(T VALUE);
};
常量.pp:
template<typedef const T>
CString Constants::ToString(T VALUE)
{
stringstream ss;
ss << VALUE;
CString csRow = ss.str().c_str();
return csRow;
}
为了将来参考Stack Overflow,请逐字复制并粘贴任何和所有编译器错误,并指出代码片段中的行号。
如果你是C++的新手,我强烈建议你拿起一本很好的C++入门书来阅读。这里的C++标签维基有一份C++社区在Stack Overflow上推荐的书籍列表。
您发布的代码片段存在多个问题。以下是我从片段的视觉检查中看到的内容:
将typedef const T
更改为typename T
,并将定义移动到标题中:
class Constants
{
public:
[...]
template<typename T>
static CString ToString(T value);
{
std::stringstream ss; // Note std:: prefix!
ss << value;
CString csRow = ss.str().c_str();
return csRow;
}
};
(您也可以使用class T
而不是typename T
;在这种情况下,它们都是等效的。)
确保编译器能够看到CString
的定义。如果stdafx.h
还没有包含cstringt.h
,那么您可能需要包含它。
还要注意,标准库类型位于std
命名空间中。这就是为什么有一个std::stringstream
而不是简单的stringstream
。您也可以使用using namespace std;
,但永远不要在头文件中使用它。
避免对变量和参数使用UPPERCASE NAMES
;它们通常是为宏保留的。
C4430 C++ does not support default-int
只需检查弹出错误的行,然后检查变量声明或fubcations 中是否遗漏了任何类型说明符
使用typename或class而不是typedef
相关文章:
- 如何在C++中克服此 C4430 编译器错误?
- 错误:C4430:缺少类型说明符-假定为int.注意:C++不支持default-int
- Qt <winInet.h> 在构建时输出许多 C4430 和 C2146 错误
- 声明 Windows API 结构 (DCB) 的对象 - 错误 C4430:缺少类型说明符 - 假定为 int
- 错误C4430:丢失类型指定词 - 假设INT.注意:C 不支持对我的构造函数的默认设置
- 简单代码给出C 错误C4430和C2143
- 如何修复这些错误:C2146 和 C4430(在 C++ 中)
- C++假定错误 C4430 int
- 错误 C2144 和错误 C4430 在同一行上
- 尝试双重多集对象后出现 C4430 错误
- 模板类中函数的错误 C4430、C2143 和 C2244
- 外部"C"和错误 C4430
- CREATESTRUCT错误C4430:缺少类型说明符-假定为int.注意:C++不支持默认的int C:xdc
- C++编译错误C4430
- 在VC++中使用模板时发生C4430错误
- 缺少类型说明符-int假定C4430错误
- C++快速地板模板:Windows上的Visual Studio出现C4430错误
- c++宏给出了C4430错误:缺少类型说明符
- C2143, c4430错误,不知道原因
- C4430错误-缺少类型说明符-假定为int