Я получаю эти две ошибки в своем коде:
Error C3867 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str': non-standard syntax; use '&' to create a pointer to member 59
Error C2661 'Product::Product': no overloaded function takes 2 arguments 59
Кажется, что когда я пытаюсь вызвать конструктор не по умолчанию, он получает только 2 аргумента, хотя я пытаюсьпередать его 4. Это всего лишь предположение, но я подозреваю, что, возможно, мне нужно добавить некоторые проверки NULL или что-то? но я не вижу, как какой-либо из аргументов, которые я передаю, может иметь значение NULL, поэтому я застрял.
Вот мое объявление и определение для моего конструктора не по умолчанию:
Product(bool restocking, string name, int quantity, double price); //Declaration
Product::Product(bool restocking, string name, int quantity, double price):InventoryItem(restocking), quantity_(quantity), price_(price) { } //Definition
Продукт является производным от InventoryItem
Вот неприятный фрагмент кода:
void InventorySystem::BuildInventory(void) {
int i{ 0 };
string name_buffer;
string quantity_buffer;
string price_buffer;
ifstream fin("in_inventory.txt");
if (fin) {
while (getline(fin, name_buffer, ';') && i < g_kMaxArray) {
getline(fin, quantity_buffer, ';');
getline(fin, price_buffer, '\n');
p_item_list_[i] = new Product(false, name_buffer, atoi(quantity_buffer.c_str), atof(price_buffer.c_str)); \\ Error on this line
i++;
item_count_++;
}
}
else {
cout << "Error: Failed to open input file." << endl;
}
fin.close();
}