在字符串之前预期')',STD ::不修复

时间:2013-11-13 18:05:04

标签: c++

在.h文件中,我有以下代码。

#ifndef COUNTEDLOCATIONS
#define COUNTEDLOCATIONS

#include <iostream>
#include <string>
struct CountedLocations {
CountedLocations();
CountedLocations(std::string url, int counter);
std::string url;
int count;
//below is code for a later portion of the project
bool operator== (const CountedLocations&) const;
bool operator< (const CountedLocations&) const;
};

在包含.h文件的.cpp文件中,我的代码是

#include "countedLocs.h"
#include <iostream>
#include <string>
using namespace std;
CountedLocations(std::string url, int counter)
{

}

我在'url'之前得到错误“Expected')'。我已经尝试在.h文件中注释掉空构造函数,我已经尝试过使用分号,我已经尝试删除std :: that前缀'string url',但似乎没有任何效果。我尝试在StackOverflow上查看类似的问题,但所有三个解决方案都没有做任何事情。我该如何解决这个问题?

编辑:最初,我有

CountedLocations::CountedLocations(std::string url, int counter) 

而不是

CountedLocations(std::string url, int counter)

但是这给了我在成员'CountedLocations'[-fpermissive]上的错误“额外资格'CountedLocations ::',所以我选择不使用它。

3 个答案:

答案 0 :(得分:2)

移动需要{。1}从.cpp到.h文件,以便文件#include <string>知道countedLocs.h定义。在你使用一个cpp的情况下,你可以切换包含的顺序,但如果你计划在其他地方也使用它,那么最好将它放在那里的头文件中(countsLocs.h)。

std::string

答案 1 :(得分:2)

如果这确实是你的所有代码,那么在定义struct之前你没有std :: string的定义(即#include)。

.h文件应该可以自己编译。将#include放在.h文件中(有些还包括警卫!)

答案 2 :(得分:1)

在你的cpp文件(不是你的头文件)中,你应该这样:

CountedLocations::CountedLocations(std::string url, int counter)
{

}

不是这个:

CountedLocations(std::string url, int counter)
{

}
  

但这给了我错误“额外资格'CountedLocations ::'   在成员'CountedLocations'[-fpermissive],所以我选择不使用   它

如果你在类体中对构造函数的声明进行了限定,那就是你会得到的错误。