"Using declaration" 在 RADStudio 2010 中不起作用
"Using declaration" not working in RADStudio 2010
我正在从vcl TStream
类得出一个新类:
// A stream based on a temporary file, deleted when the stream is closed
class TTempFileStream : public TStream
{
...
public:
using TStream::Seek;
__int64 __fastcall Seek(const __int64 Offset, TSeekOrigin Origin)
{
return 0; // for simplicity!
}
...
} ;
TStream
声明以下两个seek: -
virtual int __fastcall Seek(int Offset, System::Word Origin)/* overload */;
virtual __int64 __fastcall Seek(const __int64 Offset, TSeekOrigin Origin)/* overload */;
但是,我在编译我的班级时会收到以下W8022警告: -
[BCC32 Warning]_utils.h(166): W8022
'_fastcall TTempFileStream::Seek(const __int64,TSeekOrigin)' hides virtual function '_fastcall TStream::Seek(int,unsigned short)'
肯定的使用声明应该解决吗?
要将这个问题拖回正轨,我知道Tstream的两个版本::寻求相互关联的方式,而我只是想获得派生的seek(int,int)方法。。为什么我的using
声明不这样做?
roddy,您的代码非常正确。
使用tstream :: seek添加时,代码按预期工作(测试);否则,如警告所述,将隐藏基类方法。(C 语言的这一部分,雷米必须第一次与您不同意)。
警告是一个假阳性,一个非常旧的且尚未在C 构建器中尚未纠正的错误,至少从2006年版本到XE4。
您根本不需要using
语句,因此请摆脱它。您正在覆盖64位Seek()
方法。这就是您需要做的。您可以免费获得32位Seek()
方法,因为它是TStream
的公共方法,并且您在派生类上使用public
继承。您无需声明任何内容即可获得或使用32位Seek()
方法。只要您不覆盖它,它就会在内部调用您的64位Overriden Seek()
。
class TTempFileStream : public TStream
{
...
public:
...
virtual __int64 __fastcall Seek(const __int64 Offset, TSeekOrigin Origin)
{
return 0; // for simplicity!
}
...
};
fyi,如果您只需要在关闭流时删除临时文件,则根本不需要派生的类。您可以使用RTL的THandleStream
AS-IS,将其从Win32 API CreateFile()
函数传递给HANDLE
,其中您将FILE_FLAG_DELETE_ON_CLOSE
标志指定到CreateFile()
。
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- "Using declaration" 在 RADStudio 2010 中不起作用
- 基本 I/O 在 Visual C++ 2010 中不起作用
- boost::bind 在 VC++ 2010 中绑定引发异常的函数时不起作用
- STL 集自定义排序函数在 Qunicy 2005 中有效,但在 MS Studio 2010 中不起作用
- 迭代器擦除 (迭代器在先,迭代器最后) 在 Visual C++ 2010 Express 下不起作用
- Visual Studio 2010 - C++智能感知不起作用(甚至不是Ctrl + Space),没有函数名称,没有参数列表,什么都没有
- 如果我将Visual studio 2008版更改为2010版,程序将不起作用