Итак, я написал программу в Visual Studio 2015 и попытался передать ее Ubuntu. И я столкнулся с проблемами.C++ member function error: ожидается a ',' или '...' before '.' token
У меня есть класс с именем «InputData» с конструктором, который принимает две строки, чтобы положить в ifstream:
class InputData {
(...)
public:
InputData(string filea.c_str(), string fileb.c_str());
}
и в моем конструкторе, у меня есть
InputData::InputData(string filea.c_str(), string fileb.c_str())
{
ifstream instream;
instream.open(filea.c_str());
(...)
и, наконец, в мой основная функция У меня есть
InputData x ("firstfile.csv", "secondfile.csv");
Однако, когда я пытаюсь связать их вместе и скомпилировать, я получаю Ошибка:
expected a ',' or '...' before '.' token
InputData(string filea.c_str(), string fileb.c_str());
^
Я никогда не видел этот тип ошибки раньше, и я понятия не имею, что случилось с ним. Может ли кто-нибудь помочь?
(также, я использую .cstr(), потому что мой компилятор по какой-то причине не совместим с или не обновляется с ++ 11. Я получаю другую ошибку, если я не использую ПРМ.)
'InputData (строка filea.c_str(), строка fileb.c_str());' Это недопустимый синтаксис. Он также не будет компилироваться в MSVC. 'InputData (std :: string filea, std :: string fileb);' должен работать, если бы вы включили заголовок ''. –
Ari0nhh
Я пробовал это, но я получаю сообщение об ошибке «no matching function call to std :: basic_ifstream», даже если я скомпилирую с -std = C++ 11. – user144519
'InputData (строка filea.c_str(), строка fileb.c_str());' означает 'InputData (char *, char *);' so is 'char *' строковый класс? – Raindrop7