gpt4 book ai didi

winforms - C++ CLI KeyDown::raise 错误 error C3767 候选函数不可访问

转载 作者:行者123 更新时间:2023-12-02 10:50:44 32 4
gpt4 key购买 nike

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

  • 带有一个方法 stub 的接口(interface)
  • 继承自 `System::Windows::Forms::NativeWindow` 并实现接口(interface)
  • 的类
  • 具有类类型的私有(private)成员和接口(interface)类型的公共(public)属性的包装类。该类还有一个“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)但它失败了。

    最佳答案

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

    关于winforms - C++ CLI KeyDown::raise 错误 error C3767 候选函数不可访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11364370/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com