在这种情况下,类不可用,因为它是Friend

时间:2013-03-02 15:41:41

标签: c++ vb.net managed-c++

我正在尝试在VB.NET中创建遗留c ++类的实例。我已按照以下网页上的说明操作:http://windowsdevcenter.com/pub/a/dotnet/2004/03/29/mcpp_part3.html?page=2

1)使用一个文件(MFoo.cpp)和以下代码创建了一个Visual C ++项目:

class Foo 
{ public: 
// constructor 
Foo(void) {} 
// destructor 
~Foo(void) {} 
// some method 
void DoSomeFoo(){} }; 

__gc class MFoo 
{ public: Foo * _foo; 
public: 
    // constructor 
    MFoo() { _foo = new Foo();} 
    // destructor 
    ~MFoo() { delete _foo; } 
    // method 
    void ManagedDoSomeFoo() { _foo->DoSomeFoo(); } };

2)在Visual C ++中构建项目,生成DLL 3)在VB.NET应用程序中创建了对DLL(在第2部分中创建)的引用

当我尝试创建C ++对象的实例,即Dim foo As New MFoo时,我现在收到错误。错误是:MFoo在此上下文中不可用,因为它是朋友。

1 个答案:

答案 0 :(得分:3)

您需要将类MFoo声明为公开,将行__gc class MFoo替换为public __gc class MFoo