我不得不承認我的C++有點生疏。在一個項目中,我嘗試創建一個類的向量並使用它們。有一個問題,因爲我想用一個唯一的指針來識別矢量的每個條目以便快速訪問,但它不起作用。這裏是我的問題的一個小例子:C++自引用類
#include <iostream>
#include <vector>
class Foo{
public:
Foo() { ptr = this; }
~Foo() {}
Foo * ptr;
};
int main()
{
std::vector<Foo> vec;
for(unsigned int i = 0; i < 2; ++i)
vec.push_back(Foo());
for(unsigned int i = 0; i < vec.size(); ++i)
std::cout << "Object Self-Pointer: " << std::hex << reinterpret_cast<unsigned int>(vec[i].ptr) << std::endl;
}
實際輸出:
Object Self-Pointer: bfbebc18
Object Self-Pointer: bfbebc18
預期輸出:
Object Self-Pointer: bfbebc18
Object Self-Pointer: bfbebc1c
(一些指針到實際的對象)。
我希望你能幫助我解決這個問題,謝謝你提前。
請注意,這是更簡單用'的&'不是維護總是包含一個成員變量獲取對象的地址值。所以你會說'&vec [5]'而不是'vec [5] .ptr',並且不需要打印複製構造函數和賦值操作符。 – sth 2012-03-08 21:14:51
@sth謝謝你提到,但我需要確保始終使用相同的指針,因爲我在不同的地方使用它來識別類。只是使用「&」不能保證我使用了相同的指針(是嗎?):) – Listing 2012-03-08 21:17:49
你真正想要的是一張地圖 – 2012-03-08 21:22:19