gpt4 book ai didi

c++ - double 与 char* 歧义为零

转载 作者:IT老高 更新时间:2023-10-28 21:45:14 25 4
gpt4 key购买 nike

我有一个方便的 C++ 类,可以使用 doublechar* 进行初始化。除了参数为零的一种情况外,一切都按预期工作。

struct Var {
Var (double src) {}
Var (char *src) {}
};

int main(int argc, char* argv[]) {
Var A = 123;
Var B = "abc";
Var C = 0; <- Error: conversion from 'int' to 'Var' is ambiguous
}

之前我用int代替double,不知为何还好。

如何解决这个问题?

PS:我知道我可以使用 (double)0 或只使用 0.0,但有没有办法只允许使用 0被接受为double

最佳答案

您可以通过添加第三个构造函数来消除歧义,该构造函数采用 int 并委托(delegate)给 double 版本(需要 C++11):

struct Var {
Var (double src) {}
Var (const char *src) {}
// ^^^^^ should be const
Var (int src) : Var {static_cast<double>(src)} {}
};

但是,通过将 char* 构造函数更改为采用 std::string 并使用直接初始化,可以更轻松地解决此问题。

关于c++ - double 与 char* 歧义为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30982049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com