用C++指向这个

MiJ*_*Jyn 3 c++ pointers this

我想编写一行代码,返回一个指针this,因为array(std::vector<foo**>).我想过使用引用(&this),但它不起作用.

如果需要任何澄清,请告诉我.

编辑:为了澄清我在做什么,我试图直接使用数组访问对象.像这样:(*ARRAY.at(i))->foo("bar");.有人说不可能制造指针.如果是这样,我将如何使用数组直接访问对象?

lve*_*lla 10

您不能指向this,因为它不是变量,它是一个保留关键字,转换为指向当前对象的指针.

在编译器实现中,可能存在支持this指针的函数的局部变量,但它是实现细节,并且程序员无法访问其地址.

你想要做的是非常邪恶,但如果你真的想要这样做,你将不得不自己创建变量:

foo** evil_ptr_to_ptr = new foo*(this);
ARRAY.push_back(evil_ptr_to_ptr);
Run Code Online (Sandbox Code Playgroud)

在将来的某个时候你将不得不删除它:

// assuming you got all the elements in the array in the same way:
for(int i = 0; i < ARRAY.size(); ++i) {
  delete ARRAY[i];
}
Run Code Online (Sandbox Code Playgroud)

  • @ildjarn:不,你不能. (4认同)
  • ildjarn,那怎么样? (2认同)