【发布时间】:2013-02-08 12:40:22
【问题描述】:
我正在尝试编写一个混合程序集。这是一个sn-p:
public ref class OpusStream
: public Stream
{
protected:
OpusStream(void);
public:
~OpusStream(void);
!OpusStream(void);
int TestEncode(void);
/* System::IO::Stream */
virtual property bool CanRead { bool get(void) override; }
virtual property bool CanSeek { bool get(void) override; }
virtual property bool CanWrite { bool get(void) override; }
virtual property __int64 Length { __int64 get(void) override; }
virtual property __int64 Position {
__int64 get(void) override;
void set(__int64) override;
}
virtual void Flush(void) override;
int Read(Byte[], int, int) override;
long Seek(long, System::IO::SeekOrigin) override;
void SetLength(long) override;
void Write(Byte[], int, int) override;
};
这是编译器错误:
错误 11 无法创建抽象类或接口“OpusNet.OpusStream”的实例 C:\Users\benc\Documents\opus-1.1-alpha\OpusTests\MainWindow.xaml.cs 30 21 OpusTests
自从我完成 C++/CLI 以来已经有一段时间了。我真的不确定我在这里错过了什么。
【问题讨论】:
-
正如错误所说,该类在
MainWindow.xaml.cs中被识别为抽象类。在您提供实现之前,您不能只创建抽象类的实例。 -
您从抽象类
Stream继承而没有实现所有抽象方法(或者看起来如此)。您是否尝试过实现 Stream 的所有方法(假设这是 System.IO.Stream)? -
在“输出”窗口中查看完整的错误消息,它会告诉您忘记覆盖哪个抽象基类成员。
-
我已经实现了所有的抽象成员。
标签: c# c++-cli managed-c++