Tôi có một lớp học chỉ sử dụng địa phương (ví dụ, đối phó của nó là chỉ có C++ File nó được định nghĩa trong)const tĩnh trong C++ lớp: undefined tham khảo
class A {
public:
static const int MY_CONST = 5;
};
void fun(int b) {
int j = A::MY_CONST; // no problem
int k = std::min<int>(A::MY_CONST, b); // link error:
// undefined reference to `A::MY_CONST`
}
Tất cả các mã cư trú tại cùng C++ tệp. Khi biên dịch bằng cách sử dụng VS trên cửa sổ, không có vấn đề gì cả.
Tuy nhiên, khi biên dịch trên Linux, tôi chỉ gặp lỗi undefined reference
cho câu lệnh thứ hai.
Mọi đề xuất?
luận
Không chỉ định đối số mẫu chức năng. Chỉ cần 'std :: min (A :: MY_CONST, b)', nó sạch hơn. –
@KerrekSB - nói chung bạn nói đúng. Tôi đã sửa đổi ví dụ này từ mã của tôi. Có 'b' không phải là' int' và do đó tôi cần xác định rõ ràng đối số mẫu. –
câu trả lời liên quan (không phải dup) trạng thái đặc biệt của 'static ints': http://stackoverflow.com/a/1312267/2379182 –