AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / coding / 问题

All perguntas(coding)

Martin Hope
Max Taggart
Asked: 2025-04-09 01:18:52 +0800 CST

Compreendendo a saída do GDB - Conteúdo de memória

  • 9

Estou depurando uma falha de segmentação em um programa em C++, mas primeiro estou tentando entender melhor como usar o comando gdbpara inspecionar o layout da memória no arquivo principal, produzido quando o processo sofre uma falha de segmentação. Estou usando o seguinte programa de brinquedo, que sofre uma falha de segmentação intencional, para entender gdbmelhor a saída do .

int main() {
    int a = 4;
    int b = 12;
    *(int *)0 =11;
    return a + b;
}

Quando abro o arquivo principal (usando gdb my_executable path/to/core.pid), posso ver os endereços de memória que contêm os valores de ae b, o que faz sentido, já que sizeof(int) == 4:

(gdb) p &a
$5 = (int *) 0x7ffff940e078
(gdb) p &b
$6 = (int *) 0x7ffff940e07c

E quando pergunto pelo conteúdo da memória começando por &aisso, até que faz sentido, exceto que estou em uma máquina Intel, que deveria ser little endian, e parece que esses inteiros são big endian:

(gdb) x/4x &a
0x7ffff940e078: 0x00000004      0x0000000c      0xf940e120      0x00007fff
# (added by me) ---a==4---      --b==12---      other stuff ->

Então, se eu perguntar o conteúdo da memória começando no próximo endereço, eu esperaria o seguinte (todos os bytes se deslocam um para a esquerda):

(gdb) x/4x 0x7ffff940e079
0x7ffff940e079: 0x00000400      0x00000cf9      0x40e12000      0x007fff..

Mas o que gdbrealmente imprime é isto:

(gdb) x/4x 0x7ffff940e079
0x7ffff940e079: 0x0c000000      0x20000000      0xfff940e1      0xca00007f
#               --b==12?--      other stuff ->

Parece que avançamos 7 bytes, ou 4 bytes, e agora bé little endian. Mas a memória depois desse primeiro 0x0cbyte é diferente do que era no último comando (antes era, 0xf940e...agora é 0x2000...). Será que estou lendo a memória acidentalmente com alinhamento diferente? E alguém sabe por que os valores parecem ser big endian?

Estou compilando o código com g++a versão 13.3.0 no Ubuntu 24.04, caso isso ajude.

c++
  • 1 respostas
  • 77 Views
Martin Hope
Klitos Kyriacou
Asked: 2025-04-08 23:14:56 +0800 CST

DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS não preserva a escala

  • 9

Quando desserializo um número JSON para um BigDecimalusando readTree, os resultados não preservam a escala, ou seja, são tratados 0.10como 0.1. Por outro lado, se eu desserializo usando readValue, ele preserva a escala, retornando um BigDecimalcom a escala correta de 2:

    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS);
    JsonNode jsonNode = objectMapper.readTree("0.10");
    BigDecimal numberFromReadTree = ((DecimalNode)jsonNode).decimalValue();
    BigDecimal numberFromReadValue = objectMapper.readValue("0.10", BigDecimal.class);

    System.out.println(numberFromReadTree); // Prints 0.1, i.e. scale = 1
    System.out.println(numberFromReadValue); // Prints 0.10, i.e. scale = 2

Existe algum motivo para essa aparente inconsistência e existe uma opção que eu possa definir para manter a escala igual à entrada (ou seja, para ser consistente com readValue)?

java
  • 1 respostas
  • 52 Views
Martin Hope
Nemo
Asked: 2025-04-08 09:34:33 +0800 CST

É aceitável não usar o valor do índice 'i' dentro de um loop for? [duplicado]

  • 9
Esta pergunta já tem respostas aqui :
como criar um loop For quando você não precisa de índice em python? [duplicado] (5 respostas)
Variável não utilizada em um loop for (4 respostas)
Laço for em Python sem índice e item [duplicado] (2 respostas)
Fechado há 2 dias .

Seria desaprovado se a variável de índice inão fosse usada dentro de um forloop? Nunca encontrei um código que não usasse o valor do índice enquanto itera pelo loop.

def questionable():
    for i in range(3):
        print('Is this OK?') # (or do something more complicated)

# as opposed to:

def proper():
    for i in range(3):
        print(i) # (or do something that the value of 'i' is necessary)

Qual é uma maneira mais Pythonica de reescrever a função questionable, ou seja, fazer algo repetidamente sem usar a variável de iteração?

python
  • 2 respostas
  • 160 Views
Martin Hope
Marcel V.
Asked: 2025-04-08 03:20:03 +0800 CST

Várias instâncias Perl incorporadas em ambiente multithread

  • 9

Atualmente, estou desenvolvendo uma aplicação ASP.NET que, por motivos de legado, precisa executar alguns scripts Perl. Para isso, escrevi uma pequena biblioteca C++ que utiliza a API Perl embarcada. Essa biblioteca possui um único ponto de entrada (C) que permite que o código C# execute um script enquanto passa argumentos de linha de comando e um ambiente. Esse ambiente permite que o código C# imite uma chamada CGI para o script Perl.

Agora estou vendo algo estranho. O aplicativo C# permite a execução simultânea de (um número máximo de) scripts Perl. Para cada chamada, um ambiente diferente é criado e este é passado para minha biblioteca C++, que então o passa para a perl_parsefunção. O que noto então é que o ambiente real visto pelo script Perl não corresponde ao ambiente real passado, mas parece ser uma cópia antiga. Então, minha pergunta é: estou esquecendo de algo? Existe uma maneira especial de executar vários interpretadores Perl embarcados simultaneamente? Além disso, quando limito o número de threads simultâneas a 1, o problema persiste.

As partes relevantes da biblioteca C++ são as seguintes:

extern "C" __declspec(dllexport) BOOL ExecutePerlScript(PCSTR* environmentVariables,
                                                        PCSTR path)
{
    BOOL result(FALSE);

    // Create the Perl interpreter
    PerlInterpreter* my_perl(perl_alloc());
    if (NULL != my_perl)
    {
        PERL_SET_CONTEXT(my_perl);
        PL_perl_destruct_level = 1;
        perl_construct(my_perl);
        PL_origalen = 1;
        PL_exit_flags |= PERL_EXIT_DESTRUCT_END;

        // Initialize the Perl interpreter
        result = (perl_parse(my_perl,
                             XsInit,
                             NR_DEFAULT_ARGUMENTS,
                             DEFAULT_ARGUMENTS,
                             const_cast<char**>(environmentVariables)) == 0) ? TRUE : FALSE;

        // Run the interpreter
        if (result)
        {
            result = (perl_run(my_perl) == 0) ? TRUE : FALSE;
        }

        if (result)
        {
            result = LoadFile(path,
                              my_perl);
        }

        if (result)
        {
            // Execute the Perl script
            eval_pv("eval \"$" SCRIPT_TO_EVALUATE_VARIABLE_NAME "; 1\" or do { $" SCRIPT_EXECUTION_ERROR_VARIABLE_NAME " = $@; }",
                    TRUE);
        }

        // Destruct the interpreter
        PL_perl_destruct_level = 1;
        perl_destruct(my_perl);
        perl_free(my_perl);
    }

    return result;
}

extern "C" BOOL WINAPI DllMain(HINSTANCE hinstDLL,
                               DWORD fdwReason,
                               LPVOID lpvReserved)
{
    BOOL result(FALSE);

    switch (fdwReason)
    {
    case DLL_PROCESS_ATTACH:
        if (0 == g_initCount)
        {
            PERL_SYS_INIT3(0,
                           NULL,
                           NULL);
        }
        g_initCount++;
        result = TRUE;
        break;
    case DLL_PROCESS_DETACH:
        if (g_initCount > 0)
        {
            g_initCount--;
            if (0 == g_initCount)
            {
                PERL_SYS_TERM();
            }
        }
        result = TRUE;
        break;
    }

    return result;
}

O formato environmentVariablesdo snippet acima é uma matriz de char*onde cada elemento está no formato <variable name>=<variable value>e o último elemento da matriz é NULL.

O script Perl que executo é o seguinte:

use strict;

use CGI qw/:standard/;

print "---- ENVIRONMENT ----\n";
for my $env (sort keys %ENV)
{
    print "$env = $ENV{$env}\n";
}
print "\n";

Por exemplo, uma das execuções (em um loop) passa o seguinte ambiente para a função C++:

- AUTH_TYPE =
- CONTENT_LENGTH = 47
- CONTENT_TYPE = application/x-www-form-urlencoded
- GATEWAY_INTERFACE = CGI/1.1
- PATH_INFO = /test.pl
- PATH_TRANSLATED = E:\Perl\PerlTestApplication\test.pl
- QUERY_STRING = lang=nl
- REMOTE_ADDR = 1.2.3.4
- REMOTE_HOST = remote.host
- REMOTE_USER =
- REQUEST_METHOD = POST
- SCRIPT_NAME = /test.pl
- SERVER_NAME = example.domain
- SERVER_PORT = 443
- SERVER_PROTOCOL = HTTP/1.1
- SERVER_SOFTWARE = Microsoft-IIS/10.0

e então o script imprime o seguinte ambiente:

---- ENVIRONMENT ----
AUTH_TYPE =
CONTENT_LENGTH = 45
CONTENT_TYPE = application/x-www-form-urlencoded
GATEWAY_INTERFACE = CGI/1.1
PATH_INFO = /test.pl
PATH_TRANSLATED = E:\Perl\PerlTestApplication\test.pl
QUERY_STRING = lang=nl
REMOTE_ADDR = 1.2.3.4
REMOTE_HOST = remote.host
REMOTE_USER =
REQUEST_METHOD = POST
SCRIPT_NAME = /test.pl
SERVER_NAME = example.domain
SERVER_PORT = 443
SERVER_PROTOCOL = HTTP/1.1
SERVER_SOFTWARE = Microsoft-IIS/10.0

Como pode ser visto, o valor da CONTENT_LENGTHvariável é diferente e, no ambiente Perl, é o mesmo de um ambiente passado anteriormente para o script. Portanto, de alguma forma, o ambiente que passo para a nova instância do interpretador Perl não é limpo e outro ambiente ainda é usado. Eu já uso o PERL_SET_CONTEXTpara definir o contexto na thread atual logo após a construção, mas isso simplesmente não parece ser suficiente.

Eu tentei isso em uma instalação Active Perl do Perl 5.24 e em uma instalação Strawberry Perl do Perl 5.30, mas ambas dão o mesmo resultado errôneo.

O que estou fazendo errado?

windows
  • 1 respostas
  • 107 Views
Martin Hope
CygnusX1
Asked: 2025-04-07 03:12:37 +0800 CST

estouro de steady_clock quando comparado ao min?

  • 9

O código a seguir parece estar com estouro. Por quê?

#include <chrono>
#include <iostream>

int main() {
    auto now = std::chrono::steady_clock::now();
    auto low = std::chrono::steady_clock::time_point::min();
    auto elapsed = std::chrono::duration_cast<std::chrono::seconds>(now - low).count();
    std::cout << elapsed << "\n";
    return 0;
}

Eu esperaria lowque fosse o ponto de tempo mais antigo. É assim que entendo a descrição "Valor de retorno" em https://en.cppreference.com/w/cpp/chrono/time_point/min .

Portanto, qualquer outro valor, por exemplo now, deve ser maior e a diferença now - lowdeve ser uma duração positiva. A menos que, de alguma forma, transborde em algum lugar? É um bug (improvável; todos os principais compiladores parecem ter esse problema )? É algum erro meu de compreensão de chrono que está errado?

Como posso consertar isso?


Contexto: Tenho uma lista de elementos. Alguns elementos estão sendo usados ​​ativamente, outros têm um registro de data e hora que indica quando foram usados ​​pela última vez. Periodicamente, os registros de data e hora são verificados se forem muito antigos e, nesse caso, os elementos com esses registros de data e hora antigos são removidos da lista.

Um usuário pode invocar manualmente uma operação de limpeza. Ela define todos os registros de data e hora existentes para lowque, quando a próxima verificação for realizada, todos esses elementos sejam removidos.

Posso definir lowum now - reasonableBigButNotTooBigvalor para que funcione, mas pensei que std::chrono::steady_clock::time_point::minseria mais idiomático.

c++
  • 2 respostas
  • 75 Views
Martin Hope
La Creatura
Asked: 2025-04-06 00:08:21 +0800 CST

Regras sobre a escolha do tipo para um literal cujo valor é muito grande

  • 9

Eu estava testando o comportamento dos três grandes (GCC, clang, MSVC). Não tenho certeza do que é compatível com o padrão.

Considere este código:

// p43.cxx
#include <type_traits>

constinit auto n1 = 9223372036854775807; // 2^63 - 1
static_assert(std::is_same_v<decltype(n1), signed long long int>);

constinit auto n2 = 9223372036854775808; // 2^63
constinit auto n3 = 18446744073709551615; // 2^64 - 1

#if defined _MSC_VER || defined __clang__
static_assert(std::is_same_v<decltype(n2), unsigned long long int>);
static_assert(std::is_same_v<decltype(n3), unsigned long long int>);
#elif defined __GNUC__
static_assert(std::is_same_v<decltype(n2), __int128>);
static_assert(std::is_same_v<decltype(n3), __int128>);
#endif

#if defined __GNUC__ && !defined __clang__
constinit auto n4 = 18446744073709551616; // 2^64
static_assert(std::is_same_v<decltype(n4), int>);
#endif

A verificação de sintaxe é aprovada sem erros:

g++ -std=c++2c p43.cxx -Wall -Wextra -Wpedantic -fsyntax-only
clang++ -std=c++2c p43.cxx -Wall -Wextra -Wpedantic -fsyntax-only
cl /nologo /std:c++latest /nologo /Wall /wd4577 p43.cxx /Zs

(para cl, C4577 está desabilitado para maior clareza)

Visto que usei apenas literais decimais, se entendi corretamente o texto do rascunho atual, [lex.icon]/3 diz que um dos int, long intou long long intdeve ser escolhido. /4 permite usar um tipo inteiro estendido se estes não puderem ser usados, os quais parecem ser diferentes dos padrões conforme [basic.fundamental]/1,2,5 .

Todos os compiladores concordam que n1é signed long long int.

Para n2e n3, o MSVC não emite avisos, o clang emite este aviso:

aviso: literal inteiro é muito grande para ser representado em um tipo inteiro assinado, interpretando como não assinado`

e o GCC emite o mesmo tipo de aviso que o clang, mas escolhe o tipo estendido (assinado).

A definição n4só funciona com GCC, mas o tipo nem é o estendido, mas sim int.

O MSVC e o clang dariam um erro sobre ser muito grande.

Não deveria 9223372036854775808e 18446744073709551615seria malformado se signed __int128não fosse suportado?

O GCC evidentemente suporta __int128por padrão, mas 18446744073709551616é transformado em um int, mesmo que se encaixe em signed __int128. Por que isso acontece?

Editar (com base no comentário): Não especifiquei minha plataforma. PC Windows x86-64 LLP64

c++
  • 1 respostas
  • 94 Views
Martin Hope
Anna Le Souef
Asked: 2025-04-03 13:32:25 +0800 CST

Como plotar casos por semana em R? [duplicado]

  • 9
Esta pergunta já tem respostas aqui :
Plotagem por semana com ggplot em R (4 respostas)
Fechado ontem .

Tenho um conjunto de dados que é uma lista de casos únicos com uma data de ocorrência ( Date.of.admission).

Gostaria de plotar casos por semana (usando um histograma) usando a data de início da semana como rótulos do eixo x (ou seja, não o número da semana). Eu olhei para outros exemplos disso usando floor_date()e outras funções, mas não consegui fazer funcionar para mim.

Alterei o formato da data de Date.of.admission:

library(dplyr)
library(lubridate)
library(ggplot2)

class(df1$Date.of.admission)
ymd("2025-03-05")

df1 <- df1 %>%
  mutate(Date.of.admission = lubridate::ymd(Date.of.admission))

class(df1$Date.of.admission)

Então eu defino uma data de início e término:

start_date <- ymd("2023-12-11")
end_date <- ymd("2025-03-31")  

Então tracei os casos:

ggplot(df1)+
  geom_histogram(aes(Date.of.admission), binwidth = 2, color = "black", fill= "black")+
  labs(x = "Admission date",
       y= "Weekly cases")+
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))+
  scale_x_date(labels=date_format("%d %b %y"), date_breaks="30 days", limits=c(start_date, end_date))

Entretanto, em vez de casos diários, como mostra este gráfico, eu gostaria que eles aparecessem como casos por semana, com a data de início da semana no eixo x.

Muito obrigado!

Dados:

structure(list(Case.no. = 1:65, case.likelihood = c(NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), Date.of.admission = c("23/08/2024", 
"3/09/2024", "15/09/2024", "11/09/2024", "3/01/2024", "18/01/2024", 
"5/02/2024", "15/02/2024", "22/02/2024", "24/03/2024", "26/04/2024", 
"18/05/2024", "20/05/2024", "27/05/2024", "18/06/2024", "11/07/2024", 
"21/07/2024", "2/08/2024", "5/09/2024", "5/09/2024", "4/04/2024", 
"7/02/2024", "7/12/2024", "9/12/2024", "10/08/2024", "11/03/2024", 
"12/03/2024", "13/06/2024", "14/12/2023", "18/07/2024", "25/03/2024", 
"27/01/2024", "27/02/2024", NA, "16/09/2024", "15/09/2024", "17/09/2024", 
"23/10/2024", "16/10/2024", "16/10/2024", "27/11/2024", "7/11/2024", 
"7/11/2024", "12/10/2024", "8/10/2024", "5/11/2024", "25/10/2024", 
"24/10/2024", "30/11/2024", NA, "3/01/2025", "6/01/2025", "6/01/2025", 
"8/01/2025", "8/01/2025", "22/12/2024", "13/01/2025", "4/01/2025", 
"26/12/2024", "6/01/2025", "18/01/2025", "23/01/2025", NA, "15/03/2025", 
"5/03/2025"), Zoo.ID.or.name = c("M2409108", NA, "M2409115 'Heritage'", 
"M2409114 'Sloane'", NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 
NA, NA, NA, NA, "M2409117", "M2409116", "M2409113 'Chicago'", 
"20241023SM\n", NA, NA, "M2410126", "M2412133 'Chloe2'", "Chloe3'", 
"Scout", "Alana", "Paul", "Holgate", "Vasse", "M2411128 \"Zingy\"", 
"M2412136 ", NA, NA, NA, NA, NA, "M2412144", "Tonkin", "Georgie", 
"Mandy", "Flic", NA, NA, NA, NA, NA)), class = "data.frame", row.names = c(NA, 
-65L))
  • 2 respostas
  • 74 Views
Martin Hope
Fedor
Asked: 2025-04-03 04:45:59 +0800 CST

A inicialização de uma constante estática pode ser ignorada pelo rótulo 'case'?

  • 9

Tenho uma constante declarada em uma casedas minhas switchdeclarações:

void foo( int& v ) {
    switch( v ) {
    case 0:
        static constexpr int c{ 0 };
        break; 
    case 1:
        v = c;
        break;
    }
}

Tudo funciona bem no GCC, Clang e EDG. Mas se eu compilar o programa no Visual Studio, ele reclama

erro C2360: a inicialização de 'c' é ignorada pelo rótulo 'case'

Demonstração online: https://gcc.godbolt.org/z/jTdnhfzoo

É correto que a inicialização da constante cpode ser pulada? O programa está realmente malformado ou deve ser aceito?

c++
  • 1 respostas
  • 182 Views
Martin Hope
G. Rodrigues
Asked: 2025-04-03 03:52:50 +0800 CST

Compreendendo a falta de preguiça Alternative.man

  • 9

Uma biblioteca de análise sintática mínima absoluta poderia ser:

{- | Input error type. -}
data InputError = InputError
    deriving (Eq, Show)

instance Semigroup InputError where
    (<>) _ _ = InputError

instance Monoid InputError where
    mempty = InputError


{- | The parsing monad. -}
newtype Parser s e a = Parser ([s] -> Either e (a, [s]))
    deriving stock Functor


-- Instances.
instance Applicative (Parser s e) where
    pure x = Parser $ \ xs -> pure (x, xs)

    (<*>) p q = Parser $ \ xs -> do
        (f, ys) <- run p xs
        (x, zs) <- run q ys
        pure (f x, zs)

instance Monad (Parser s e) where
    (>>=) p h = Parser $ \ xs -> do
        (x, ys) <- run p xs
        run (h x) ys

instance Monoid e => Alternative (Parser s e) where
    empty = Parser $ \ _ -> Left mempty

    (<|>) p q = Parser $ \ xs ->
        case run p xs of
            r1@(Right _) -> r1
            Left e1      ->
                case run q xs of
                    r2@(Right _) -> r2
                    Left e2      -> Left $ e1 <> e2

{- | Primitive parser getting one element out of the stream. -}
one :: Parser s InputError s
one = Parser $ \ xs ->
    case uncons xs of
        Nothing -> Left InputError
        Just p  -> Right p

{- | Run the parser on input and return the results. -}
run :: Parser s e a -> [s] -> Either e (a, [s])
run (Parser p) = p

Isto compila (com linguagem GHC2021; tem que adicionar algumas importações). Carregando em ghci em cabal repl:

ghci> let p = take 2 <$> many one
ghci> run p "0123"
Right ("01","")

Isso significa que o analisador consumiu toda a entrada -- o que eu esperava ver era Right ("01", "23").

Então minha pergunta: onde a preguiça "quebra", por assim dizer, e há alguma maneira de restaurá-la? E por "restaurá-la" quero dizer fazer a implementação da instância de forma diferente para que manyseja tão preguiçosa quanto o esperado, porque se eu adicionar

{- | Implement lazy 'many' -}
atMostN :: Monoid e => Word -> Parser s e a -> Parser s e [a]
atMostN n p = go n
    where
        go 0 = pure []
        go m = do
            r <- optional p
            case r of
                Nothing -> pure []
                Just x  -> (x: ) <$> go (pred m)

E carrego no ghci, obtenho o esperado:

ghci> let q = atMostN 2 one
ghci> run q "0123"
Right ("01","23")
haskell
  • 1 respostas
  • 65 Views
Martin Hope
DRman
Asked: 2025-04-02 16:57:46 +0800 CST

C++14: Herdar construtores com "using" E definir novos construtores produz C2512 (nenhum construtor padrão apropriado disponível)

  • 9

Em C++, você pode herdar todos os construtores de uma classe base escrevendousing Baseclass::Baseclass

Minha Baseclass tem um construtor padrão e outro que aceita um argumento int, embora este realmente não importe neste caso.

Mas por razões que não entendo, o construtor padrão herdado de alguma forma "desaparece" no momento em que tento adicionar meu próprio construtor à classe derivada. Por que isso acontece e qual é a melhor solução para contornar isso?

Considere o seguinte trecho de código:

#include <iostream>
#include <string>
using std::cout;

struct Base
{
  Base() {};
  Base(int i)
  {
    cout << i << " was called";
  };
};

struct GoodDaughter : public Base
{
  using Base::Base;
};

struct EvilSon : public Base
{
  using Base::Base;

  EvilSon(std::string q) {}; //define ANOTHER constructor
};

void testFamily()
{
  Base b;
  GoodDaughter g1; //compiles
  EvilSon e1;      //somehow doesn't compile, complains about no default constructor existing


  GoodDaughter g2(1); //compiles
  EvilSon e2(1);      //compiles, which means that other constructor still got inherited.
}

A mensagem de erro é:

<source>(30): error C2512: 'EvilSon': no appropriate default constructor available
<source>(19): note: see declaration of 'EvilSon'

Estou usando a versão mais recente do MSVC 19. Algumas pessoas descobriram que outros compiladores, como o gcc, não davam esse erro

c++
  • 1 respostas
  • 75 Views
Prev
Próximo

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Reformatar números, inserindo separadores em posições fixas

    • 6 respostas
  • Marko Smith

    Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não?

    • 2 respostas
  • Marko Smith

    Problema com extensão desinstalada automaticamente do VScode (tema Material)

    • 2 respostas
  • Marko Smith

    Vue 3: Erro na criação "Identificador esperado, mas encontrado 'import'" [duplicado]

    • 1 respostas
  • Marko Smith

    Qual é o propósito de `enum class` com um tipo subjacente especificado, mas sem enumeradores?

    • 1 respostas
  • Marko Smith

    Como faço para corrigir um erro MODULE_NOT_FOUND para um módulo que não importei manualmente?

    • 6 respostas
  • Marko Smith

    `(expression, lvalue) = rvalue` é uma atribuição válida em C ou C++? Por que alguns compiladores aceitam/rejeitam isso?

    • 3 respostas
  • Marko Smith

    Um programa vazio que não faz nada em C++ precisa de um heap de 204 KB, mas não em C

    • 1 respostas
  • Marko Smith

    PowerBI atualmente quebrado com BigQuery: problema de driver Simba com atualização do Windows

    • 2 respostas
  • Marko Smith

    AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos

    • 1 respostas
  • Martin Hope
    Fantastic Mr Fox Somente o tipo copiável não é aceito na implementação std::vector do MSVC 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant Encontre o próximo dia da semana usando o cronógrafo 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor O inicializador de membro do construtor pode incluir a inicialização de outro membro? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský Por que os conceitos do C++20 causam erros de restrição cíclica, enquanto o SFINAE antigo não? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul O C++20 mudou para permitir a conversão de `type(&)[N]` de matriz de limites conhecidos para `type(&)[]` de matriz de limites desconhecidos? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann Como/por que {2,3,10} e {x,3,10} com x=2 são ordenados de forma diferente? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller O ponto e vírgula agora é opcional em condicionais bash com [[ .. ]] na versão 5.2? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench Por que um traço duplo (--) faz com que esta cláusula MariaDB seja avaliada como verdadeira? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng Por que `dict(id=1, **{'id': 2})` às vezes gera `KeyError: 'id'` em vez de um TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob: MobileAds.initialize() - "java.lang.Integer não pode ser convertido em java.lang.String" para alguns dispositivos 2024-03-20 03:12:31 +0800 CST

Hot tag

python javascript c++ c# java typescript sql reactjs html

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve