2014-05-02 15 views
14

Như tôi đã phát hiện từ this post các loại tham số cho phép đối với một loại đen người dùng định nghĩa như sau:Làm cách nào để tạo một chữ cái do người dùng xác định cho loại số nguyên đã ký?

const char* 
unsigned long long int 
long double 
char 
wchar_t 
char16_t 
char32_t 
const char*, std::size_t 
const wchar_t*, std::size_t 
const char16_t*, std::size_t 
const char32_t*, std::size_t 

Vâng, có chữ ký số nguyên duy nhất mà tôi nhìn thấy trong danh sách đó là char, mà là quá nhỏ. Nếu tôi muốn làm một cái gì đó như thế này:

str operator"" _i(int i) { 
    return i*2; 
} 

Sau đó, khi tôi viết -1000_i tôi mong muốn nhận được -2000. Làm thế nào để tôi làm điều này?

+0

Sidenote: 'char' có thể hoặc không thể là loại đã ký tùy thuộc vào việc triển khai. – user2079303

+2

'char' (và' wchar_t', 'char16_t' và' char32_t' áp dụng cho các ký tự chữ cái được trích dẫn đơn. Một chuỗi các chữ số luôn luôn là một chữ số nguyên và nó luôn luôn là tích cực, vì dấu '-' là _không phải là một phần của –

Trả lời

30

Không có nội dung nào như một số nguyên âm. -1000 là ứng dụng của toán tử - đơn nhất cho số 1000 theo nghĩa đen.

Sau đó, khi tôi viết -1000_i Tôi hy vọng sẽ nhận được -2000. Làm thế nào để tôi làm điều này?

Xác định 1000_i theo cách áp dụng thống nhất - cho -2000. Ví dụ: bạn có thể tạo 1000_i loại cấu trúc với một tùy chỉnh quá tải operator-.

+1

+1: Phát hiện và đánh bại tôi. –

Các vấn đề liên quan