派生类作为默认参数 g++

2024-04-17

请看一下这段代码:

template<class T>
class A
{
 class base
 {

 };

 class derived : public A<T>::base
 {

 };

public:

 int f(typename A<T>::base& arg = typename A<T>::derived())
 {
  return 0;
 }
};

int main()
{
 A<int> a;
 a.f();
 return 0;
}

编译在 g++ 中生成以下错误消息:

test.cpp: In function 'int main()':
test.cpp:25: error: default argument for parameter of type
                    'A<int>::base&' has type 'A<int>::derived'

基本思想(使用派生类作为基本引用类型参数的默认值)适用于 Visual Studio,但不适用于 g++。我必须将我的代码发布到大学服务器,在那里他们用 gcc 编译它。我能做些什么?我有什么遗漏的吗?


您无法创建对右值的(可变)引用。尝试使用常量引用:

 int f(const typename A<T>::base& arg = typename A<T>::derived())
//     ^^^^^

当然不能修改arg带有常量引用。如果必须使用(可变)引用,请使用重载。

 int f(base& arg) {
   ...
 }
 int f() {
   derived dummy;
   return f(dummy);
 }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

派生类作为默认参数 g++ 的相关文章

随机推荐

  • Mercurial 合并两个命名分支:工作目录没有祖先

    我有两个命名分支 SPRINT 009 和 SPRINT 010 一些变更集已提交给 SPRINT 009 我想将其合并到 SPRINT 010 中 我能够毫无问题地将分支中的变更集合并回默认值 我在将变更集从branch one合并到br
  • Bash 中的多维关联数组

    我正在尝试创建一个多维关联数组 但需要一些帮助 我已审查过这个SO答案中建议的页面 https stackoverflow com questions 3020713 how to print bash varibles contents
  • facebook画布高度在ie8和firefox中没有设置滚动

    嘿 我想设置一个长页面应用程序 没有FB会限制我的应用程序的高度并附加滚动 我做了 iframes canvas 并在设置中自动调整大小并应用该代码 它限制了我在 ie 中显示滚动并在 firefox 中剪切内容 代码在这里 http pa
  • 在python中使用windows资源管理器浏览器存储文件路径

    我在 python 中编写了一些加密代码 它从用户那里获取原始输入消息 然后使用 AES 对其进行加密和解密 现在我想增强工作 我希望我可以从代码中打开 Windows 资源管理器并浏览到计算机上的任何文件 选择它 当我按 确定 按钮时 文
  • noscript 标签的正文样式?

    如果没有启用 JavaScript 我希望我的身体有overflow hidden 没有滚动条 我该如何解决这个问题 是否可以在 内部使用 noscript 标签并在其中设置特定样式 如果你的意思是对于 HTML 文档 我会构建 HTML
  • 根据 XSD 验证 XML 时忽略元素顺序

    我们有一个 XML 需要根据 XSD 进行验证 XML 由 XSTREAM 生成 我们正在使用 jaxp api 根据相应的 XSD 验证 XML 不幸的是 目前我们的测试用例失败 因为生成的 XML 的元素 标签的顺序 顺序与 XSD 不
  • 如何根据本地子网自动切换ssh配置?

    当我在某个网络 子网为 10 10 11 x 上时 我需要跳过中间主机才能到达目的地 因为我无法更改目的地端口 并且可以退出受限网络的端口有限 我成功地使用了如下所示的 ssh 配置 Host web direct web HostName
  • Android:即使视图滚动,如何将广告对齐到屏幕底部?

    之前我问过一个问题 至今没能解决 http stackoverflow com questions 3126347 android relativelayout how to alignparentbottom when wrapped i
  • 有没有办法通过 JNI 将 Java 数组传递给 C 而无需复制它?

    据我所知 使用GetDoubleArrayElements 是JVM决定是否复制Array的元素 这种情况下 有什么办法可以避免复制呢 如果没有 有没有其他方法可以从Java转移到C而无需复制 我正在传递非常大的数组 我希望我可以避免复制
  • Soapui 添加节点到请求 (Groovy)

    我遇到了问题 所以我得到了这样的 WSDL
  • 如何使用 python + NumPy / SciPy 计算滚动/移动平均值?

    numpy scipy 上似乎没有简单计算移动平均值的函数 导致复杂的解决方案 https stackoverflow com questions 12816011 weighted moving average with numpy co
  • 用 Ruby 测量两根弦之间的距离?

    我可以用 Ruby 测量两根弦之间的距离吗 I e compare Test est Returns 1 compare Test Tes Returns 1 compare Test Tast Returns 1 compare Test
  • IIS 6 上的多个域、相同的 Web 应用程序

    在 IIS 6 上 是否可以让多个域名指向同一个 Web 应用程序 并根据域名有条件地从 Web 应用程序内提供 CSS 我需要在同一个 Web 应用程序上托管数百个不同的 皮肤 皮肤取决于域名 而且我真的不想启动大量的 Web 应用程序
  • 如何以编程方式获取服务的状态(正在运行/已停止)

    我需要在我的 C 应用程序中获取 Windows 打印后台处理程序 服务的状态 shikarssj提供的功能运行良好 加载服务时只需要管理员权限 这是一个不需要完全许可的版本 include
  • Ionic/Cordova 更改 Android 导航栏颜色

    我正在尝试更改 Android 中导航栏的颜色 在底部 带有返回键和返回键 在没有硬件返回键和返回键的手机上 在我使用 Cordova 的 Ionic 应用程序中 有没有办法做到这一点 Example 发现了这个很棒的 cordova 插件
  • 如何设置 IntelliJ Idea Scala 项目来识别本地 Ivy2 缓存?

    您可能知道 新版本的 SBT 0 11 旨在维护公共库缓存 ivy2 cache而不是复制项目目录中的完整依赖项集 但是 IntelliJ Idea 我使用 SBT 插件生成 Idea 项目 默认似乎忽略了公共缓存 只看到放在项目目录下的库
  • 将 Python 转换为 R

    我知道有一个模块 rpy 和 rpy2 可以将 R 代码转换为 Python 有什么简单的方法可以做到相反吗 rpy 2 不转换代码 它只允许您通过 python 与 R 进行通信并从 python 中发出 R 命令的接口 鉴于 R 非常依
  • dyld:未加载库:@rpath/SwiftyJSON.framework/SwiftyJSON

    我一直在使用模拟器来测试我的应用程序 今天 我决定在模拟器中使用其他设备来测试它 令我惊讶的是 它在某些设备上启动时崩溃 而在其他设备上却运行得很好 我的应用程序构建运行于 iPad Air 可调整大小的iPad iPhone 5S iPh
  • 在结构体中动态分配结构体

    我正在动态分配一个具有不同结构作为成员的结构 struct a other members struct b struct b基本上持有一个指向另一个的指针struct b 所以想到struct b作为链接列表 如果我动态分配struct
  • 派生类作为默认参数 g++

    请看一下这段代码 template