1

自分で定義した新しいデータ型の log2() 関数を Array に書きたいと思います。だから、それはこのようになります

#include <iostream>
#include <cmath>

Array log2(Array& A)
{
    Array C=A;

    for (int i=0; i<A.size(); i++)
         C[i]=log2(A[i]);

    return C;
}

sin、cos などの他の関数にもかかわらず、この関数 (log2) は std 名前空間で宣言されていません。そのため、次を使用しても

std::log2(A[i])

コンパイラは、log2 の内部が組み込みの c 関数であるとサポートされていることを解決しません。コードを簡潔にするために、同じ名前 (log2) を使用し続けます。

これはエラーメッセージです

エラー: タイプ 'double' の式からのタイプ 'Array&' の参照の無効な初期化

解決済み: -std::C++ 11 に切り替えたときに機能しました。

4

2 に答える 2

-2

私の知る限り、組み込み関数log2は で宣言されていませんnamespace std。標準log2関数を呼び出すには、次のコードを使用する必要があります。

log2(A[i]);

私の答えが役に立てば幸いです。

于 2016-01-05T23:14:33.383 に答える