Ошибка компилятора C++ с использованием g++ -c: компилятор распознает константную строку & как int
Я создал класс Products, который имеет конструктор
Product::Product(const int &num,const float &pr,const std::string &str):
number(num),price(pr),name(str)
{
}
у меня есть объявление в заголовке и реализация в другом исходном файле, когда я компилирую это, используя g++ -c i, получаю ошибку:
g++ -c Product.cpp
Product.cpp:14: error: prototype for 'Product::Product(const int&, const float&, const std::string&)' does not match any in class 'Product'
Product.h:5: error: candidates are: Product::Product(const Product&)
Product.h:10: error: Product::Product(const int&, const float&, int)
почему это происходит? почему компилятор заменяет const std::string & на int?
2 ответа
Проблема в том, что вы забыли #include <string>
в вашем заголовке, заставляя g++ выдавать сомнительную диагностику, которая возвращается на int
для типов это не понятно.
Я решил проблему, удалив файл с именем Product.gch в той же папке, я не знаю, как он решил, но это сделал