"int" в Ubuntu - PullRequest
       10

"int" в Ubuntu

0 голосов
/ 01 июля 2011

Может кто-нибудь сказать мне, если при компиляции программы на c ++ g ++ (Ubuntu / Linaro 4.4.4-14ubuntu5) 4.4.5 меняет int s на long int s?если так, как это можно изменить?Если нет, просто перегрузить operator long?Это как перегрузка оператора uint32_t / uint64_t?Похоже, что другой тип приведений (без каламбура).

это вызывает ошибки:

uint128_t.h: In function ‘std::ostream& operator<<(std::ostream&,
uint128_t)’:
uint128_t.h:593: error: conversion from ‘uint128_t’ to ‘long int’ is
ambiguous
uint128_t.h:83: note: candidates are: uint128_t::operator uint64_t()
uint128_t.h:79: note:                 uint128_t::operator uint32_t()
uint128_t.h:75: note:                 uint128_t::operator uint16_t()
uint128_t.h:71: note:                 uint128_t::operator uint8_t()
uint128_t.h:67: note:                 uint128_t::operator int()
uint128_t.h:63: note:                 uint128_t::operator char()
uint128_t.h:59: note:                 uint128_t::operator bool()

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Попробуйте этот вариант:

out = "0123456789abcdef"[size_t(rhs % div)] + out;

, поскольку вы предоставили преобразования для всех типов типов без знака, но не для целых чисел со знаком.


И да, вы можете определитьнеявное преобразование в long int просто определяет operator long таким же образом, как и все другие преобразования.


Наконец, обратите внимание, что ваш выбор имени структуры зарезервирован POSIX и, вероятно,конфликт с будущими версиями заголовка стандартной библиотеки stdint.h.

2 голосов
/ 01 июля 2011

Нет, это не так.Int это int это int.Это отдельный тип от long int.Относительно того, какие операторы вы перегружаете, все зависит от того, что вы хотите сделать .Вы на самом деле не описали это.

Но если вы хотите определить оператор для работы на int, вам следует перегрузить его для int.Если вы хотите, чтобы он работал на long int, определите перегрузку для этого.

Что вы пытаетесь сделать?И почему вы передаете uint128_t оператору, но спрашиваете о int и long int?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...