Tôi muốn chuyển một con trỏ bằng tham chiếu đến hàm, sao cho tôi có thể thay đổi địa chỉ con trỏ được chuyển đến và tôi muốn gán đối số này làm mặc định giá trị.Con trỏ qua C++ bằng cách tham chiếu và gán giá trị mặc định
một cái gì đó như thế này:
trong tờ khai
void myFunc(SomeType* &var=NULL);
và định nghĩa:
void MyClass::myFunc(SomeType* &var){
if(var!=NULL)
(*var)=(*someOtherPointer);
if(someCondition)
var=NULL;
}
như vậy mà một callee có thể quyết định xem anh ấy muốn gọi hàm với một đối số hoặc không tranh cãi. Và sucht rằng nếu ông quyết định để vượt qua một cuộc tranh cãi, và someCondition giữ, con trỏ qua sẽ trỏ đến NULL sau đó
tuy nhiên - nếu tôi cố gắng để làm điều đó như thế này tôi nhận được một:
Lỗi C2440: 'mặc định đối số ':' int 'không thể được chuyển thành' SomeType * & '
Cảm ơn sự trợ giúp!
Trừ khi "someCondition" bao gồm "var! = NULL", bạn vừa chấp nhận câu trả lời mà không tham chiếu đến con trỏ NULL. Có lẽ không phải những gì bạn muốn. – imaginaryboy
Ngoài ra, hãy lưu ý rằng việc sử dụng (** var) = (* someOtherPointer) sẽ thực sự tạo một bản sao đối tượng. Nếu bạn chỉ có nghĩa là để làm một bản sao con trỏ, bạn có thể muốn (* var) = (someOtherPointer). – Thought