新的类型/类和朋友的C ++重载构造函数

codechimp

无论如何,有没有friend一种方法可以使使用新定义的结构的已声明结构的构造函数重载。例如,在下面的简单示例中,我想struct A使用BUT重载一个构造函数struct B而不修改Ah

main.cpp

#include "A.h"
#include "B.h"

int main() {
    B x(2);
    A y(B); 
};

struct A {
    float a;
    A(float);
};

A::A(float f)   { a=f; };

h

struct B {
    float b;
    B(float);
    B(A);
};

B::B(float f)   { b=f;   };
B::B(A s)       { b=s.a; };

A::A(B s){ a=s.b; };
// ^^^----obviously error since A(B) is not declared, 
// but how can I make this work without changing A.h?

我知道我可以用适当的安置解决的问题struct B;,并A(B);在中我还想出了一种使用模板的方法,但这不是一个很好的解决方案。并且它需要对Ah进行修改由于某些原因,我不想进入这里,我不想使用这两种技术。我想重载A :: A()构造函数而不修改Ah,更重要的是,不假设的放置是#include "A.h"可控制的。我认为这是朋友的目的,但是我不知道是否/如何使其与构造函数一起使用。

迪特玛·库尔(DietmarKühl)

您不能将构造函数(或其他成员)添加到类中。但是,您可以在涉及的其他类中创建转换运算符:

class B {
   // ...
public:
    explicit operator A() const { /* build an A object and return it */ }
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

重载的构造函数c#

来自分类Dev

C ++重载异常的构造函数

来自分类Dev

两种类型的构造函数重载

来自分类Dev

在Powershell构造函数中按类型重载?

来自分类Dev

TypeScript 构造函数重载返回不同的类型

来自分类Dev

派生类中的重载构造函数

来自分类Dev

继承和重载默认构造函数

来自分类Dev

构造函数重载和默认参数

来自分类Dev

C# 构造函数重载无用的括号

来自分类Dev

通过参数C ++的类型专门研究重载的构造函数

来自分类Dev

C ++链表-构造函数和运算符重载

来自分类Dev

c#中构造函数重载和链接的区别

来自分类Dev

用Java中的泛型类型重载构造函数

来自分类Dev

重载构造函数以处理不同的数据类型

来自分类Dev

如何让我的重载构造函数接受任何数字类型?

来自分类Dev

类模板构造函数重载解析度歧义

来自分类Dev

从派生类调用重载的基本构造函数

来自分类Dev

构造函数重载类使用DLL获取链接器错误?

来自分类Dev

多个Super(),用于重载超类构造函数

来自分类Dev

对象跳过重载构造函数的新实例

来自分类Dev

初始化列表和构造函数失败的重载解析

来自分类Dev

构造函数和重载运算符执行顺序

来自分类Dev

构造函数和转换运算符之间的重载解析

来自分类Dev

运算符重载和复制构造函数

来自分类Dev

继承构造函数并提供新的重载:没有参数的基础构造函数似乎不参与重载解析

来自分类Dev

编译器无法识别重载的构造函数C ++

来自分类Dev

C#构造函数重载:new object.FromOtherObject()?

来自分类Dev

调用重载的构造函数会产生歧义错误C ++

来自分类Dev

在C#中编写多个构造函数重载的最佳方法

Related 相关文章

热门标签

归档