标签: reference

如何在C++中转换/转换指向引用

如何将指针(Object *ob)传递给原型的函数void foo(Object &)

c++ pointers casting reference type-conversion

134
推荐指数
2
解决办法
11万
查看次数

C++:const引用,在类型说明符之后

参数之间有什么区别:

int foo1(const Fred &arg) {
...
}
Run Code Online (Sandbox Code Playgroud)

int foo2(Fred const &arg) {
...
}
Run Code Online (Sandbox Code Playgroud)

?我没有看到parashift FAQ中涉及的这个案例.

c++ const reference

132
推荐指数
5
解决办法
7万
查看次数

我应该更喜欢会员数据中的指针或引用吗?

这是一个简化的例子来说明这个问题:

class A {};

class B
{
    B(A& a) : a(a) {}
    A& a;
};

class C
{
    C() : b(a) {} 
    A a;
    B b; 
};
Run Code Online (Sandbox Code Playgroud)

因此B负责更新C的一部分.我通过lint运行代码并且它围绕引用成员发出错误:lint#1725.这谈到了对默认副本和分配的关注,这是公平的,但默认的副本和赋值也很糟糕,所以那里没有什么优势.

我总是尽量使用引用,因为裸指针不确定地引入了谁负责删除指针.我更喜欢按值嵌入对象,但如果我需要一个指针,我在拥有指针的类的成员数据中使用auto_ptr,并将对象作为引用传递.

当指针可能为null或可能更改时,我通常只在成员数据中使用指针.有没有其他理由更喜欢指向数据成员的引用?

是否真的可以说包含引用的对象不应该是可赋值的,因为初始化后不应更改引用?

c++ reference class-members

126
推荐指数
6
解决办法
9万
查看次数

从同一个向量push_back元素是否安全?

vector<int> v;
v.push_back(1);
v.push_back(v[0]);
Run Code Online (Sandbox Code Playgroud)

如果第二个push_back导致重新分配,则向量中对第一个整数的引用将不再有效.那么这不安全吗?

vector<int> v;
v.push_back(1);
v.reserve(v.size() + 1);
v.push_back(v[0]);
Run Code Online (Sandbox Code Playgroud)

这样可以安全吗?

c++ reference vector push-back language-lawyer

125
推荐指数
4
解决办法
6025
查看次数

我应该通过const-reference传递std :: function吗?

假设我有一个函数,它需要std::function:

void callFunction(std::function<void()> x)
{
    x();
}
Run Code Online (Sandbox Code Playgroud)

我应该x通过const-reference来代替吗?:

void callFunction(const std::function<void()>& x)
{
    x();
}
Run Code Online (Sandbox Code Playgroud)

这个问题的答案是否会根据函数的作用而改变?例如,如果它是一个类成员函数或构造函数,它存储或初始化std::function成成员变量.

c++ reference function

123
推荐指数
3
解决办法
5万
查看次数

在C++中传递对指针的引用

据我所知,没有理由不允许我在C++中传递对指针的引用.但是,我这样做的尝试失败了,我不知道为什么.

这就是我正在做的事情:

void myfunc(string*& val)
{
    // Do stuff to the string pointer
}

// sometime later 
{
    // ...
    string s;
    myfunc(&s);
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我收到这个错误:

无法将参数1从'std :: string*'转换为'std :: string*&'

c++ pointers reference

120
推荐指数
4
解决办法
14万
查看次数

无法摆脱借来的内容

我不明白这个错误cannot move out of borrowed content.我收到了很多次,我总是解决它,但我从来没有理解为什么.

例如:

for line in self.xslg_file.iter() {
    self.buffer.clear();

    for current_char in line.into_bytes().iter() {
        self.buffer.push(*current_char as char);
    }

    println!("{}", line);
}
Run Code Online (Sandbox Code Playgroud)

产生错误:

error[E0507]: cannot move out of borrowed content
  --> src/main.rs:31:33
   |
31 |             for current_char in line.into_bytes().iter() {
   |                                 ^^^^ cannot move out of borrowed content
Run Code Online (Sandbox Code Playgroud)

我通过克隆解决了这个问题line:

error[E0507]: cannot move out of `*line` which is behind a shared reference
  --> src/main.rs:31:33
   |
31 |             for current_char in line.into_bytes().iter() {
   |                                 ^^^^ …
Run Code Online (Sandbox Code Playgroud)

reference move-semantics rust borrow-checker

115
推荐指数
2
解决办法
6万
查看次数

Android:无法将@ drawable/picture转换为drawable

在我的drawable文件夹中,我有一些图像,它们都引用完美,但是当我尝试在同一文件夹中添加具有完全相同大小的任何更多图像,并尝试引用它时,标记错误"无法转换@ drawable/picture into a drawable".我尝试使用不同名称的相同图像,它只是一直给我错误.我也尝试过不同的XML布局和相同的东西.此外,图片的名称一直是"jack","abc","question_mark",你可以看到严格按照你可以使用的字符的规则,仍然会出现错误信息.对于如何解决问题,任何建议都会很棒,谢谢.

无法将@ drawable/picture转换为drawable

android image reference drawable android-layout

112
推荐指数
6
解决办法
13万
查看次数

如果 Python 字符串是不可变的,为什么当我使用 += 附加到它时它会保持相同的 id?

Python 中的字符串是不可变的,这意味着值不能更改。但是,当附加到以下示例中的字符串时,由于 id 保持不变,因此原始字符串内存看起来已被修改:

>>> s = 'String'
>>> for i in range(5, 0, -1):
...     s += str(i)
...     print(f"{s:<11} stored at {id(s)}")
... 
String5     stored at 139841228476848
String54    stored at 139841228476848
String543   stored at 139841228476848
String5432  stored at 139841228476848
String54321 stored at 139841228476848
Run Code Online (Sandbox Code Playgroud)

相反,在以下示例中,id 发生变化:

>>> a = "hello"
>>> id(a)
139841228475760
>>> a = "b" + a[1:]
>>> print(a)
bello
>>> id(a)
139841228475312
Run Code Online (Sandbox Code Playgroud)

python string reference string-concatenation immutability

102
推荐指数
2
解决办法
6958
查看次数

删除未使用的引用(!="using")

如何查找和删除项目中未使用的引用?

我知道您可以轻松删除vs 2008中的using语句,但这并不会删除项目中的实际引用.引用的dll仍将复制到bin/setup包中.

.net reference visual-studio

100
推荐指数
4
解决办法
3万
查看次数