加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

我必须使用C类字段的指针吗?

发布时间:2020-12-16 05:52:02 所属栏目:百科 来源:网络整理
导读:在阅读了一个关于 the difference between pointers and references的问题后,我决定使用引用而不是我的类字段的指针.然而,似乎这是不可能的,因为它们不能被声明为未初始化(对吗?). 在我现在正在工作的特定场景中,我不想使用正常的变量(他们的方式是什么正确
在阅读了一个关于 the difference between pointers and references的问题后,我决定使用引用而不是我的类字段的指针.然而,似乎这是不可能的,因为它们不能被声明为未初始化(对吗?).

在我现在正在工作的特定场景中,我不想使用正常的变量(他们的方式是什么正确的术语?),因为在声明它们时会自动初始化它们.

在我的代码段中,bar1会自动使用默认的构造函数(这不是我想要的)实例化,& bar2导致编译器错误,因为您不能使用未初始化的引用(正确的?),而且* bar3是快乐的,因为larry因为指针可以被声明为未初始化(顺便说一下,最佳做法是将其设置为NULL?).

class Foo
{
public:
    Bar bar1;
    Bar &bar2;
    Bar *bar3;
}

看起来我在这种情况下必须使用指针,这是真的吗?此外,使用变量的最佳方法是什么? – >语法有点麻烦吗?艰难的运气? smart pointers等等?这是否相关?

更新1:

在我的类中尝试实现引用变量字段并在构造函数中初始化之后,为什么会收到以下错误?

../src/textures/VTexture.cpp: In constructor ‘vimrid::textures::VTexture::VTexture()’:
../src/textures/VTexture.cpp:19: error: uninitialized reference member ‘vimrid::textures::VTexture::image’

这是真正的代码:

// VTexture.h
class VTexture
{
public:
    VTexture(vimrid::imaging::ImageMatrix &rImage);
private:
    vimrid::imaging::ImageMatrix ℑ
}

// VTexture.cpp
VTexture::VTexture(ImageMatrix &rImage)
    : image(rImage)
{
}

我也尝试在标题中这样做,但没有运气(我得到相同的错误).

// VTexture.h
class VTexture
{
public:
    VTexture(vimrid::imaging::ImageMatrix &rimage) : image(rImage) { }
}

更新2:

弗雷德·拉森 – 是的!有一个默认构造函数;我忽略了它,因为我认为这与问题无关(愚蠢的我).删除默认构造函数后,我引起编译器错误,因为该类与std :: vector一起使用,该std :: vector需要默认构造函数.所以看起来我必须使用默认构造函数,因此必须使用一个指针.耻辱还是呢?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读