如何在使用合成时使用默认构造函数

小星星

这是我使用合成的代码。我删除了不相关的功能,以使其更易于理解。当我使用参数化的构造函数运行此代码时,它可以正常工作。但是,如果我在初始化它时使用默认构造函数不起作用,则代码将在两者之间终止。

#include <iostream>
using namespace std;
class link
{
    const char* name;
public:
    link() :name("null")
    {};
    link(const char n[]) :name(n)
    {};
    ~link()
    {

        cout << "destructor called " << endl;
    };
};
class webpage
{
private:
    double height;
    double width;
    link* links;
public:
    webpage() :height(10), width(10),links(new link[1])
    {};
    webpage(double hw, link* hyperlinks) :height(hw), width(hw), links(hyperlinks)
    {   };
    webpage(double h, double w, link* hyperlinks) :height(h), width(w), links(hyperlinks)
    {   };
    ~webpage()
    {
            delete [] links;
        cout << "page destructor called " << endl;
    };
    void showdata(int linkno)
    {
        cout << "height: " << height << endl;
        cout << "width: " << width << endl;
        cout << "links " << endl;
        for (int i = 0; i < linkno; i++)
        {
            cout << "link #" << i + 1 << " = " << links[i].getname() << endl;
        }

    }
};
class website
{
private:
    const char* name;
    webpage* wpgs;
public:
    website() :name("null"),wpgs(new webpage[1])
    {};
    website(const char n[], webpage* page) :name(n), wpgs(page)
    {};
    ~website()
    {
        delete[] wpgs;
        cout << "website destructor " << endl;
    };
    void showdata(int linkno, int pageno)
    {
        cout << "Website name: " << name << endl;
        for (int j = 0; j < pageno; j++)
        {
            cout << "Webpage #" << j + 1 << " : " << endl;
            wpgs[j].showdata(linkno);
        }
    }
};
int main(int argc, char* argv[])
{
    link* link1=new link[2] {{"maha"},{"saira"}};
    link* link2=new link[3] {{"areeb"},{"aima"},{"umair"}};
    link* link3=new link[2] {{"ahmad"},{"azra"}};
    link* link4=new link[4] {{"usama"},{"tyabba"},{"ali"},{"hamza"}};
    webpage* page=new webpage[4] {{2,link1},{3.2,5.2,link2},{4,1,link3},{42,13,link4}};
    website site("my website",page);
site.showdata(2,4);

}

上面的代码工作正常,但是如果我使用下面的代码中的默认构造函数

int main()
{
   link* links;
   webpage* page; 
   website site("website", page);
   site.showdata(1, 1);
}

现在它将无法正常工作。带有终止代码。并生成错误error1'links':使用未引用的局部变量
error2未初始化的局部变量'page'

如何使用默认的构造函数来简化操作,请帮忙。有问题的实施的所有条件都是问题陈述的要求。

约翰

您没有使用任何构造函数,因为linkspage是指针。指针没有构造函数。

也许你想要这个?

webpage page;
website site("website", &page);

现在,因为page不是指针,所以webpage将调用默认构造函数。

或查看其余的代码,可能这是正确的。

webpage* page = new webpage[1];
website site("website", page);

new webpage[1] 调用网页的默认构造函数。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用合成时如何使用默认构造函数?在视觉工作室

来自分类Dev

当父类在 C++ 中没有默认构造函数时,如何在继承的类中使用构造函数?

来自分类Dev

如何使用 LambdaMetafactory 调用默认构造函数

来自分类Dev

没有反序列化的相应值时,如何使用构造函数的默认参数值?

来自分类Dev

Java使用默认构造函数

来自分类Dev

使用Jackson解析器时的默认构造函数问题

来自分类Dev

使用const字符串时创建默认构造函数

来自分类Dev

在Java中使用CDI时是否需要默认构造函数?

来自分类Dev

使用自己的Typescript类型时,默认不是构造函数

来自分类Dev

如何在Universal Windows Apps中使用非默认构造函数

来自分类Dev

如何在Lua用户数据中注册C ++类构造函数并默认使用它

来自分类Dev

如何在C ++中使用默认构造函数将char *设置为NULL?

来自分类Dev

如何在构造函数中使用@Value?

来自分类Dev

如何在构造函数内部使用Timer?

来自分类Dev

如何在构造函数内部使用Timer?

来自分类Dev

如何在构造函数中使用setTimeout

来自分类Dev

如何在构造函数中使用 <vector>

来自分类Dev

C ++ 03:使用模板构造函数时保留默认副本构造函数

来自分类Dev

使用匿名对象时,默认构造函数和复制构造函数均未调用

来自分类Dev

如何使用反射获取默认构造函数参数?

来自分类Dev

如何在C ++中“默认构造函数”

来自分类Dev

使用emplace_back向向量添加元素时,如何强制编译器使用默认构造函数?

来自分类Dev

如何使用需要更专门的构造函数参数的合成来扩展类?

来自分类Dev

如何使用带有删除的默认构造函数的move构造函数

来自分类Dev

如何实现将类别设置为其他的默认构造函数(使用构造函数链接)

来自分类Dev

当类仅获得最终字段时,如何在类的构造函数中仅使用if-else?

来自分类Dev

如何在函数构造函数中使用标签

来自分类常见问题

JSON.net:如何在不使用默认构造函数的情况下反序列化?

来自分类Dev

如何添加默认构造函数并使它调用另一个构造函数并使用默认值?

Related 相关文章

  1. 1

    使用合成时如何使用默认构造函数?在视觉工作室

  2. 2

    当父类在 C++ 中没有默认构造函数时,如何在继承的类中使用构造函数?

  3. 3

    如何使用 LambdaMetafactory 调用默认构造函数

  4. 4

    没有反序列化的相应值时,如何使用构造函数的默认参数值?

  5. 5

    Java使用默认构造函数

  6. 6

    使用Jackson解析器时的默认构造函数问题

  7. 7

    使用const字符串时创建默认构造函数

  8. 8

    在Java中使用CDI时是否需要默认构造函数?

  9. 9

    使用自己的Typescript类型时,默认不是构造函数

  10. 10

    如何在Universal Windows Apps中使用非默认构造函数

  11. 11

    如何在Lua用户数据中注册C ++类构造函数并默认使用它

  12. 12

    如何在C ++中使用默认构造函数将char *设置为NULL?

  13. 13

    如何在构造函数中使用@Value?

  14. 14

    如何在构造函数内部使用Timer?

  15. 15

    如何在构造函数内部使用Timer?

  16. 16

    如何在构造函数中使用setTimeout

  17. 17

    如何在构造函数中使用 <vector>

  18. 18

    C ++ 03:使用模板构造函数时保留默认副本构造函数

  19. 19

    使用匿名对象时,默认构造函数和复制构造函数均未调用

  20. 20

    如何使用反射获取默认构造函数参数?

  21. 21

    如何在C ++中“默认构造函数”

  22. 22

    使用emplace_back向向量添加元素时,如何强制编译器使用默认构造函数?

  23. 23

    如何使用需要更专门的构造函数参数的合成来扩展类?

  24. 24

    如何使用带有删除的默认构造函数的move构造函数

  25. 25

    如何实现将类别设置为其他的默认构造函数(使用构造函数链接)

  26. 26

    当类仅获得最终字段时,如何在类的构造函数中仅使用if-else?

  27. 27

    如何在函数构造函数中使用标签

  28. 28

    JSON.net:如何在不使用默认构造函数的情况下反序列化?

  29. 29

    如何添加默认构造函数并使它调用另一个构造函数并使用默认值?

热门标签

归档