Ошибка компилятора 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 в той же папке, я не знаю, как он решил, но это сделал

Другие вопросы по тегам