c++ - 'NSFontManager' 没有可见的@interface 声明选择器 'fontpanel:'

标签 c++ xcode cocoa

全部,

以下代码:

在 fontpropertypage.cpp 中:

#import "AppKit/AppKit.h"

CFontPropertyPage::CFontPropertyPage()
{
    m_font = font;
    NSFontManager *manager = [NSFontManager sharedFontManager];
    NSFontPanel *panel = [manager fontpanel:true];
}

在fontpropertypage.mm

#include "fontpropertypage.cpp"

我在尝试获取 NSFontPanel 指针时收到来自 Xcode 的主题错误。

有人可以帮忙修复吗?

这两个文件都存在于 Xcode 项目中。

TIA!!

最佳答案

NSFontManager 和 NSFontPanel 是 Cocoa 中的 GUI 对象,can only be accessed with Objective-C (or Objective C++, your .mm file) .

如果您将这段代码直接放在 .mm 文件中,它肯定会编译,但是将它放在您包含的 .cpp 文件中是很奇怪的(我通常只包含头文件,如 .h.hpp ).

我建议将该类直接放入 .mm 文件中。

此外,您上面的代码通常有一些错误:

CFontPropertyPage::CFontPropertyPage()
{
    // m_font should be a class member ; what about font? 
    m_font = font;
    NSFontManager *manager = [NSFontManager sharedFontManager];
    // fontPanel needs a capital P
    NSFontPanel *panel = [manager fontPanel:true];
}

关于c++ - 'NSFontManager' 没有可见的@interface 声明选择器 'fontpanel:',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44992768/

相关文章:

c# - 在 C++ 中正确返回 uint16_t 数组的方法

c++ - 在 Ubuntu 11.10 下链接 boost_thread 失败

c++ - 错误 : . 是什么意思。 Xcode/Clang 中的 ."bytes to alignment boundary"?

ios - 调用委托(delegate)方法

objective-c - 自定义查找器(文件夹)图像 w/Cocoa

c++ - 将 1 和 0 的字符串转换为二进制值

c++ - 忽略调用 openssl EVP_cleanup 会导致严重缺陷或内存泄漏吗?

ios - 是否可以在编译时修改 iOS 包 id 和图像资源?

ios - 使用 Extensions 将 Swift 类传播到多个文件

objective-c - 无法识别的选择器 - [NSView borderRect]