【问题标题】:C++ CLI KeyDown::raise Error error C3767 candidate function(s) not accessibleC++ CLI KeyDown::raise 错误 error C3767 候选函数不可访问
【发布时间】:2012-07-06 14:40:19
【问题描述】:

我有一个包含三个实体的场景:

  • 具有一个方法存根的接口
  • 继承自 `System::Windows::Forms::NativeWindow` 并实现接口的类
  • 具有类类型的私有成员和接口类型的公共属性的包装类。这个类还有一个 `KeyDown` 事件成员,可以从窗口类调用/引发

这些是我正在使用的文件:

INativeWindow.h

#pragma  once
public interface class INativeWindow
{
    void Nothing();
};

CLINativeWindow.h

#pragma  once
ref class NWHolder;
public ref class CLINativeWindow : System::Windows::Forms::NativeWindow, INativeWindow
{
public:
    NWHolder^ Parent;
    virtual void  Nothing() sealed;
    void DoIt();
};

CLINativeWindow.cpp

#include "stdafx.h"
#include "CLINativeWindow.h"

void CLINativeWindow::Nothing()
{
    Console::Write("None");
}
void CLINativeWindow::DoIt()
{
    Parent->KeyDown(this, nullptr);
};

NWHolder.h

#pragma  once
#include "INativeWindow.h"
#include "CLINativeWindow.h"

public ref class NWHolder
{

internal:
    event System::Windows::Forms::KeyEventHandler^ KeyDown;
public:
    virtual property INativeWindow^ OwnNativeWindow
    {
        INativeWindow^ __clrcall get() sealed;
        void __clrcall set(INativeWindow^ value) sealed; 
    }

private:
    CLINativeWindow^ nativeWindow_;
};

NWHolder.cpp

#include "stdafx.h"
#include "NWHolder.h"


INativeWindow^ NWHolder::OwnNativeWindow::get()
{
    return nativeWindow_;
}

void NWHolder::OwnNativeWindow::set(INativeWindow^ value)
{
    nativeWindow_ = dynamic_cast<CLINativeWindow^>(value); 
}

编译 时,我收到此错误: Error 1 error C3767: 'NWHolder::KeyDown::raise': candidate function(s) not accessible ..\NativeWindows\CLINativeWindow.cpp 10

有什么可以做的吗?我什至尝试过#pragma make_public(System::Windows::Forms::KeyEventHandler),但它失败了。

【问题讨论】:

    标签: winforms events event-handling compiler-errors c++-cli


    【解决方案1】:

    C++/CLI 事件的“raise”内部方法总是声明为受保护的。在 NWHolder 上添加一个名为“FireKeyDownEvent”的方法,并为其提供您喜欢的任何可访问性。

    【讨论】:

      猜你喜欢
      • 2010-10-31
      • 2014-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 2019-08-19
      相关资源
      最近更新 更多