Tôi có một lớp với một thành viên tĩnh đó là một con trỏ như sau:Khởi tạo một con trỏ tĩnh trong C++
animation.h
class Animation
{
public:
Animation();
static QString *m;
};
animation.cpp
#include "animation.h"
QString* Animation::m = 0;
Animation::Animation()
{
}
Khi tôi cố gắng để khởi tạo con trỏ 'm' đó từ một lớp khác như vậy:
Animation::m = new QString("testing");
Nó hoạt động.
Nhưng khi tôi làm điều đó theo cách này:
QString x("Testing");
Animation::m = &x;
Các chương trình bị treo.
Điều gì là sai với phương pháp thứ hai này?
Ngoài ra tôi muốn có con trỏ tĩnh đó là riêng tư để tôi có thể tạo các hàm getter và setter tĩnh cho nó. Setter nên sử dụng phương thức thứ hai là 'x' sẽ xuất hiện trong một tham số vì vậy tôi bị kẹt.
Cảm ơn bạn đã trợ giúp!
Điều đó chắc chắn trả lời cảm ơn bạn! –
'* (Animation :: m) = x;' gợi ý một con trỏ '0'. Con trỏ không bao giờ được cấp phát chỉ được khởi tạo thành' 0'. –
@Lỗi bỏ lỡ điều đó, đã sửa. Cảm ơn. –