首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当可见性生效时,如何导出公共的内部/嵌套类?

当可见性生效时,如何导出公共的内部/嵌套类?
EN

Stack Overflow用户
提问于 2015-03-09 14:26:48
回答 1查看 1.6K关注 0票数 4

我正在整理一个补丁,它增加了Crypto++库的可见度。根据GCC能见度的wiki:

在抛出异常的二进制文件中捕获用户定义类型的异常需要进行类型信息查找.然而,这并不是完整的故事--它变得更难了。默认情况下,符号可见性是“默认的”,但是如果链接器遇到一个隐藏的定义--只有一个--类型信息符号将永久隐藏(请记住C++标准的ODR -一个定义规则)。

拿走:所有东西(包括基类)都需要导出或使用__attribute__ ((visibility ("default")))进行修饰。所以我得到了一个异常类引用的例外列表,而且.

代码语言:javascript
运行
AI代码解释
复制
class CRYPTOPP_DLL AlgorithmParametersBase
{
public:
    class ParameterNotUsed : public Exception
    {
    public: 
            ...
        }
}

然后:

代码语言:javascript
运行
AI代码解释
复制
cryptopp$ nm -D libcryptopp.so | c++filt | grep ParametersNotUsed
cryptopp$

如果我用class CRYPTOPP_DLL ParameterNotUsed : public Exception进行重建,那么我得到的结果是相同的:

代码语言:javascript
运行
AI代码解释
复制
class CRYPTOPP_DLL AlgorithmParametersBase
{
public:
    class CRYPTOPP_DLL ParameterNotUsed : public Exception
    {
    public: 
            ...
        }
}

现在,我相当肯定基类是导出的:

代码语言:javascript
运行
AI代码解释
复制
$ nm -D libcryptopp.so | c++filt | grep Exception
00000000004d6980 V typeinfo for CryptoPP::Exception
0000000000230700 V typeinfo name for CryptoPP::Exception
00000000004d6bf0 V vtable for CryptoPP::Exception

我的问题:

  • 如何导出内部类或嵌套类,因为它似乎没有导出?
  • nm -D是验证typeinfo信息的正确工具吗?
  • 我是否能够捕获ParameterNotUsed异常(我怀疑不会)?
  • 我是否能够捕获Exception基类异常(我怀疑是这样)?

如果重要的话:

代码语言:javascript
运行
AI代码解释
复制
$ gcc --version
gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
EN

回答 1

Stack Overflow用户

发布于 2015-03-09 15:34:31

您是否尝试过像这样导出内部类:

代码语言:javascript
运行
AI代码解释
复制
class Exception {};

class __declspec(dllexport) AlgorithmParametersBase
{
public:
    class ParameterNotUsed : public Exception
    {
    public:
    };
};

// exporting known type
class __declspec(dllexport) AlgorithmParametersBase::ParameterNotUsed;

不过,我没有测试上面的调用,但是它编译得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28952886

复制
相关文章
Java 的嵌套类(内部类和静态嵌套类)
Java允许在一个类定义另一个类,称为嵌套类 (Nested Classes),类似下面的形式
用户7886150
2021/04/26
8940
08 内部类(嵌套类)
目前,见到的类、接口和枚举类型都定义为顶层类型。也就是说,都是包的直接成员,独立于其他类型。不过,类型还可以嵌套在其他类型中定义。这种类型是嵌套类型(nested type),一般称为“内部类”,是 Java 语言的一个强大功能。
acc8226
2022/05/17
6760
08 内部类(嵌套类)
Java中的嵌套类、内部类、静态内部类
}那么在上面的例子中我们称OuterClass为外围类(enclosing class),里面的那个类称之为嵌套类(Nested Class).
用户7886150
2020/12/18
1.7K0
java的内部类和静态内部类(嵌套类)
开发新项目,写Swager的mode的时候用到了嵌套Model,于是在代码中,出现了静态内部类。在codeReview的时候稍微和大家聊了一下。尤其是Static 修饰类和修饰对象和变量不一样呢?
袁新栋-jeff.yuan
2020/08/26
1.7K0
Effective Java-嵌套类(内部类)
嵌套类(nested class)是指被定义在另一个类内部的类。嵌套类的存在目的应该只是为外围类(enclosing class)提供服务。嵌套类有四种:
用户2146693
2019/08/08
6650
【java开发系列】—— 嵌套类与内部类
嵌套类与内部类在java中使用的很广泛,为了避免难以理解,这里用了几个小例子,说明它的用法。   嵌套类与内部类的结构如下图   静态嵌套类     静态嵌套类,是一种在类之外声明的嵌套类,由于是
用户1154259
2018/01/17
6250
【java开发系列】—— 嵌套类与内部类
java静态嵌套类 或叫 静态内部类
参考链接: Java静态嵌套类 一. 什么是嵌套类及内部类?    可以在一个类的内部定义另一个类, 这种类称为嵌套类(nested classes), 它有两种类型: 静态嵌套类和非静态嵌套类。 
用户7886150
2021/04/07
7190
jxls嵌套导出excel。
 我们设想一下,有一条哆啦A梦的流水生产线,生产线上在生成这哆啦A梦。我们知道,哆啦A梦的口袋中有很多不同的道具,那么我们在生成的时候就把这些道具预先放进哆啦A梦的口袋吧。
崔笑颜
2020/06/08
1.4K0
Java学习笔记:深入理解嵌套类和内部类
可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型: 静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种: 其一、在一个类(外部类)中直接定义的内部类; 其二、在一个方法(外部类的方法)中定义的内部类; 其三、匿名内部类。下面,我将说明这几种嵌套类的使用及注意事项。
用户1289394
2021/02/05
6960
Java学习笔记:深入理解嵌套类和内部类
创建公共云的内部体验
如今,云计算已经彻底改变了我们构建IT企业内部系统的方式。事实上,企业的IT部门在云计算诞生以来,一直复制自己的数据中心内的云计算的力量。 麻烦的是,云计算系统的构建新的网络,这意味着他们可以从头开始,因此使用基于云计算的资源更具创新性,并可以使用最现代的技术和方法。很多企业并不具备这样的奢侈品。几十年来,企业硬件和软件采购的成熟度存在着不同的水平,这些架构必须支持关键任务系统的操作。 不过,事情正在发生变化。目前新技术可以为企业提供公有云的经验,其中包括: ·使用弹性计算资源,比如存储和计算。 ·计量资源
静一
2018/03/26
1.4K0
react-navigation 中的多tabs嵌套时内部tabs无法正常切换问题
原因 问题应该是当用户滑动或切换时,无法判断是哪个tabs应该进行滑动切换和展示切换动画。 解决 swipeEnabled - 是否允许在标签之间进行滑动 animationEnabled - 是否在更改标签时动画 在根tabs导航设置里进行设置: const MyApp = TabNavigator({ Home: { screen: MyHomeScreen, }, ChildrenTabs: { screen: ChildrenTabsScreen, }, }, {
mcq
2018/06/20
2.1K0
Java嵌套类
本文来自于Java深入解析——透析Java本质的36个话题  Java的嵌套类分为 静态成员类(静态嵌套类)、内部类(非静态嵌套类)、嵌套接口。内部类还可以分为内部成员类、本地内部类、匿名内部类。
用户7886150
2021/04/07
6710
python中的嵌套类
在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下。动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问题同时简化了程序,值得学习。
py3study
2020/01/08
3.6K0
python 中的嵌套类
能够看到 类中 又定义了 类 ,这种情况我们称之为嵌套类 。给一个简单 demo 来认识嵌套类 。
py3study
2020/01/10
4K0
java嵌套类
术语:嵌套类分为两种:静态或非静态。嵌套类声明为static称为静态嵌套类。非静态嵌套类都称为内部类。
用户7886150
2020/12/18
1.3K0
如何判断cdn已生效 cdn生效与不生效的区别
大家为了能够拥有更加完美的上网体验,同样也是为了自己在玩游戏、看视频的时候没有任何的卡顿,在生活中一定要选择一个合适的网络加速器。在网络加速器的帮助之下能够使网络数据传输更加平稳,经历了长时间的发展以来cdn加速已经获得了很多人的认可。但是很多人使用cdn加速之后并不知道如何判断cdn已生效?其实判断方法很简单。
用户8715145
2021/09/18
5.3K0
如何判断cdn已生效 cdn生效与不生效的区别
Python的类和方法——成员可见性
使用装饰器@classmethod。第一参数必须是当前类对象,该参数名一般约定为「cls」,当然cls也可以换成其他名字,通过它来传递类的属性和方法(不能传实例的属性和方法)
stormwen
2019/08/05
9720
友元类和嵌套类
友元函数用于类的扩展接口中,类并非只能拥有友元函数,也可以将类作为友元,该类称为友元类。
艰默
2022/12/12
7420
okhttp-公共类
http://blog.csdn.net/lmj623565791/article/details/47911083 参照了鸿洋_大神的代码重写了自己需要的方法
tea9
2022/07/16
2440
POI导出excel执行公式 公式不生效问题[通俗易懂]
在下面这行代码:workbook.write(out);// 输出Excel内容,生成Excel文件 “之前”, 添加这个语句:workbook.setForceFormulaRecalculation(true);// 执行公式。
全栈程序员站长
2022/09/23
1.9K0

相似问题

当可见性改变时触发WPF动画?

30

当可见性绑定为真时,如何调用函数?

11

内部/嵌套类-私有类和公共类之间的差异

26

当可见性从可见性变为可见时,TabLayout文本消失。

21

当可见性完成隐藏时,无法查看html表。

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文