【问题标题】:C++ adding class to namespace to create new class objectC ++将类添加到命名空间以创建新的类对象
【发布时间】:2017-10-19 09:14:22
【问题描述】:

我为自学创建了一个类似于https://www.codeproject.com/Articles/15351/Implementing-a-simple-smart-pointer-in-c 的智能指针项目,我不想使用std::shared_ptr,也不想使用weak_ptrunique_ptr

项目的迷你版 http://cpp.sh/957bl

现在我想扩展项目并创建一个 interface 来制作对象和复制功能。 原始项目包含一个复制构造函数和一个常规构造函数。

我想知道的是如何创建复制功能和制作功能。

我遇到的错误:

Error   C3861   'makeShared': identifier not found  main.cpp    22  
Error   C3861   'copyShared': identifier not found  main.cpp    12  
Error   C2653   'TestAllocator': is not a class or namespace name   PointerInterface.hpp    35  

【问题讨论】:

  • 这些函数在哪里声明或定义?显然不在您包含的任何头文件中(并且您没有向我们展示它们)。
  • 换一种说法,为什么你不想使用标准的智能指针?只是为了学习目的,还是有其他一些你想解决的潜在问题?如果这是一些潜在的问题,那么也许您应该询问那个,而不是尝试重新发明(我认为这很糟糕)轮子。
  • @Someprogrammerdude OP 写了“自学”
  • @Someprogrammerdude 抱歉,我不得不赶紧去医院。我已经用我正在工作的旧项目以及我正在尝试创建的正确 interface.hpp 更新了这个问题,并且需要帮助
  • makeSharedcopySharedInterface.hpp 中定义,似乎没有包含在任何地方。 TestAllocator 未在您显示的代码中的任何位置声明。

标签: c++ c++11 interface smart-pointers


【解决方案1】:

当您因为看不到为什么缺少声明而烦恼时,您想做的一件事是查看正在编译的文件的预处理器输出。它应该在大多数 C++ IDE 的菜单上或通过命令行标志可用。输出通常过长,但它会明确地向您显示进入编译器的输入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    相关资源
    最近更新 更多