次の C++ コードがありました。宣言内のコンストラクターへの引数は、コンストラクターの定義とは異なる constness を持っていました。
//testClass.hpp
class testClass {
public:
testClass(const int *x);
};
//testClass.cpp
testClass::testClass(const int * const x) {}
g++ を使用して警告なしでこれをコンパイルすることができました。64 ビットの solaris に組み込まれている C++ コンパイラでリンカー エラーが発生したことが判明しました。これにより、問題があることに気付きました。
この場合、一致する引数のルールは何ですか? それはコンパイラ次第ですか?