Có lẽ đây không phải là một câu hỏi khó, nhưng tôi luôn hơi bối rối về cách xử lý kiểu String như một đối số trong Visual C++. Tôi đã phần sau đây để chức năng:Vượt qua một đối số bằng cách tham chiếu trong C++/CLI để gán lại ảnh hưởng đến người gọi
void function_1(String ^str_1)
{
str_1 = gcnew String("Test");
}
void function_2()
{
String ^str_2 = nullptr;
function_1(str_2);
}
Sau khi gọi function_1
, str_2
vẫn bằng null
, nhưng những gì tôi muốn đạt được là str_2
bằng Test
. Vì vậy, làm cách nào tôi có thể đạt được nội dung của str_1
được chuyển đến function_2
?
Cảm ơn lời khuyên nào.
Cảm ơn! Đã học được điều gì đó ngay hôm nay! – stefangachter
@Agnel Tôi không hiểu lý do tại sao bạn nói rằng khi bạn chuyển một con trỏ chỉ các bản sao cục bộ của tham chiếu được thay đổi. Đầu tiên của tất cả một con trỏ không phải là một tham chiếu. Thứ hai, nếu bạn vượt qua một con trỏ trong c + + và sửa đổi dữ liệu nó trỏ đến, bạn không sửa đổi một bản sao cục bộ của dữ liệu. Tôi có bị lẫn lộn trong ngữ nghĩa hay không? – Ian
@Ian, Ý tôi là nếu bạn chuyển một con trỏ và thay đổi giá trị của biến con trỏ (ngược lại với giá trị của dữ liệu nó trỏ tới), chỉ giá trị của biến con trỏ cục bộ mới thay đổi. Và có, nếu bạn sửa đổi dữ liệu một con trỏ trỏ đến, bản thân dữ liệu được sửa đổi và không phải là bản sao cục bộ. Không có bản sao dữ liệu cục bộ nào tồn tại; một bản sao cục bộ của con trỏ không tồn tại. –