小编use*_*876的帖子

C++ constexpr重载具有相同名称的构造函数

我确实理解constexpr在运行时可以计算的表达式上使用它时的用法.

我想为复数创建一个constexpr.x = 5_i应该创建一个复杂数量的我自己创建的复杂类,并且我需要一个constantexpr constructor.

class Complex {
private:
    double real_;
    double imag_;

public:
    ...
    Complex(double real, double imaginary);

    constexpr Complex(double real, double imaginary):
        real_(real),imag_(imaginary) {};

//Nonmember function
constexpr Complex operator""_i(long double arg);
Run Code Online (Sandbox Code Playgroud)

Complex(double real, double imaginary);稍后在.cpp文件中定义的.
当我尝试编译它时,我收到以下错误:

‘constexpr Complex::Complex(double, double)’ cannot be overloaded with  
‘Complex::Complex(double, double)’
Run Code Online (Sandbox Code Playgroud)

如果我只定义constexpr函数我的结论是我不能Complex::Complex(double, double)在运行时使用.

为什么我不能定义两个不同的功能?这在C++中是不允许的?编译器能否看到两个函数之间的区别?还有其他办法吗?

c++ overloading class constexpr

0
推荐指数
1
解决办法
294
查看次数

标签 统计

c++ ×1

class ×1

constexpr ×1

overloading ×1