如何防止C ++参数被隐式转换?

时间:2019-12-24 02:56:19

标签: c++ operator-overloading parameter-passing implicit-conversion illegalargumentexception

我有一个提供接口以使用operator []访问其数组的类。 像这样:

delete

我不希望此类的接口被错误类型的参数滥用, 例如double / float,因为此处的隐式强制转换会导致错误的结果。 类的用户必须自己指出正确的idx,而不是躺在class MyArray { public: MyArray( int iSize ) : m_iSize( iSize ), m_upArray( std::make_unique<string[]>( iSize ) ) {}; const string& operator[]( int idx ) const { return std::max( 0, std::min( m_iSize - 1, idx ) ); }; private: int m_iSize; std::unique_ptr<string[]> m_upArray; }; 上。 如果我接受double / float作为idx,将来很难调试我们的程序!

是否可以通过非整数参数拒绝它们? 最好是拒绝正在编译的有病代码。

0 个答案:

没有答案