我真的不明白为什么我在创建模板类共享指针时收到错误消息

大歌迷

我不明白我收到的错误消息,我也不知道该如何解决。

template<typename T>
class shared_pointer
{
    private:
        static int howManyObjects;
        T* pointer;
    public:
        shared_pointer( T* p=nullptr)
        {
            pointer=p;
        }
        shared_pointer( shared_pointer& a)
        {
            a.pointer=this->pointer;
            howManyObjects++;
        }
        ~shared_pointer()
        {
            if(howManyObjects==1) delete pointer;
        }

        T& operator *()
        {
            return *pointer;
        }
        T* operator ->()
        {
            return pointer;
        }
};
template<typename T>
int shared_pointer<T>::howManyObjects=0;

int main()
{
    int b=5;
    int* wsk=&b;
    shared_pointer<int> a= shared_pointer<int>(wsk);
    return 0;
}

错误信息:

main.cpp: In function ‘int main()’:
main.cpp:10:25: error: cannot bind non-const lvalue reference of type ‘shared_pointer<int>&’ to an rvalue of type ‘shared_pointer<int>’
  shared_pointer<int> a= shared_pointer<int>(wsk);

In file included from main.cpp:2:0:
smartpp.cpp:14:2: note:   initializing argument 1 of ‘shared_pointer<T>::shared_pointer(shared_pointer<T>&) [with T = int]’
  shared_pointer( shared_pointer& a)
科拉尔克

您的问题出在复制构造函数中:

shared_pointer( shared_pointer& a)
{
    a.pointer = this->pointer;
    howManyObjects++;
}

因此,根据参数a的类型前面的空格,您可能知道根据复制构造函数规则它必须是const。但是,当您尝试放置到此处时,出现const以下错误:

shared_pointer(const shared_pointer& a)
{
    a.pointer = this->pointer; // Compilation error: assignment of member ‘shared_pointer<int>::pointer’ in read-only object
    howManyObjects++;
}

因此,您尝试删除const并收到了您在帖子中显示的错误。问题不在于您尝试放置的const,而是分配方向。您不想修改参数值,而是当前对象的值。将您的复制构造函数更改为以下内容,一切都会很好:

shared_pointer(const shared_pointer& a)
{
    this->pointer = a.pointer; // Pay attention that this get the value of a, and not the opposite.
    howManyObjects++;
}

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我不明白为什么会收到此错误

来自分类Dev

我不明白为什么会收到以下错误

来自分类Dev

我不明白为什么我会收到此错误

来自分类Dev

我不明白为什么我会收到这个错误:[...] 有多个参数值 [...]

来自分类Dev

不明白为什么我会收到NullPointerException

来自分类Dev

我不明白为什么会收到“分段错误(核心已转储)”错误

来自分类Dev

不明白为什么我会收到解析206错误(UserCannotBeAlteredWithoutSessionError)

来自分类Dev

我不明白为什么会收到此valgrind错误

来自分类Dev

收到运行时错误1004,我不明白为什么

来自分类Dev

不明白为什么我会收到拒绝权限的错误

来自分类Dev

我不明白为什么会收到IllegalArgumentException:CardLayout的父错误

来自分类Dev

我不明白为什么它说 ArrayOutOfBound 错误

来自分类Dev

不明白为什么会收到错误消息:无法从控制台找到或加载主类

来自分类Dev

我是PHP的新手,我不明白为什么会收到这个未定义的变量错误

来自分类Dev

我在RI中收到警告消息,不明白

来自分类Dev

我真的不明白为什么需要分页中的目录

来自分类Dev

我不明白的错误

来自分类Dev

我不明白为什么我尝试时我的代码无法采用CSS

来自分类Dev

我不明白为什么我的波形是这样出来的

来自分类Dev

我不明白为什么有些指针地址是这样的

来自分类Dev

不断在我的pygame项目上出现属性错误,我不明白为什么

来自分类Dev

我的位置参数错误抖动太少,我不明白为什么?

来自分类Dev

我有这个错误:无法读取null的属性“值”,我不明白为什么

来自分类Dev

我的代码输出错误,我不明白为什么

来自分类Dev

我不明白为什么我的 JS 函数会导致错误

来自分类Dev

我不明白的指针警告

来自分类Dev

不明白为什么斯威夫特要我露骨

来自分类Dev

不明白为什么我的NSString数据为空

来自分类Dev

我不明白为什么Redirect()无法正常工作

Related 相关文章

  1. 1

    我不明白为什么会收到此错误

  2. 2

    我不明白为什么会收到以下错误

  3. 3

    我不明白为什么我会收到此错误

  4. 4

    我不明白为什么我会收到这个错误:[...] 有多个参数值 [...]

  5. 5

    不明白为什么我会收到NullPointerException

  6. 6

    我不明白为什么会收到“分段错误(核心已转储)”错误

  7. 7

    不明白为什么我会收到解析206错误(UserCannotBeAlteredWithoutSessionError)

  8. 8

    我不明白为什么会收到此valgrind错误

  9. 9

    收到运行时错误1004,我不明白为什么

  10. 10

    不明白为什么我会收到拒绝权限的错误

  11. 11

    我不明白为什么会收到IllegalArgumentException:CardLayout的父错误

  12. 12

    我不明白为什么它说 ArrayOutOfBound 错误

  13. 13

    不明白为什么会收到错误消息:无法从控制台找到或加载主类

  14. 14

    我是PHP的新手,我不明白为什么会收到这个未定义的变量错误

  15. 15

    我在RI中收到警告消息,不明白

  16. 16

    我真的不明白为什么需要分页中的目录

  17. 17

    我不明白的错误

  18. 18

    我不明白为什么我尝试时我的代码无法采用CSS

  19. 19

    我不明白为什么我的波形是这样出来的

  20. 20

    我不明白为什么有些指针地址是这样的

  21. 21

    不断在我的pygame项目上出现属性错误,我不明白为什么

  22. 22

    我的位置参数错误抖动太少,我不明白为什么?

  23. 23

    我有这个错误:无法读取null的属性“值”,我不明白为什么

  24. 24

    我的代码输出错误,我不明白为什么

  25. 25

    我不明白为什么我的 JS 函数会导致错误

  26. 26

    我不明白的指针警告

  27. 27

    不明白为什么斯威夫特要我露骨

  28. 28

    不明白为什么我的NSString数据为空

  29. 29

    我不明白为什么Redirect()无法正常工作

热门标签

归档