我的C ++文件中有如下一行代码:
NewsExtendedController.php
use Roquin\RoqNewsevent\Controller\EventController;
class NewsExtendedController extends EventController
public function nextEventListAction(array $overwriteDemand = NULL)
我收到以下编译时错误:
vector<pair<vector<Block>, vector<string>>> groupedRequests;
我没有在类中使用命名空间std,但是很可能在我包含的头文件之一中使用了它。我不明白的是为什么它需要std :: pair,而不需要std :: vector。如果我更改为std :: pair或使用命名空间std指定,则代码可以编译并正常运行。有什么想法吗?
答案 0 :(得分:2)
两种可能的解释是-
using std::vector
#define vector std::vector
很明显,没有看到所有标头并不是一种真正的方法来判断是否有两个标头引起了,但是任何一个都可以复制所描述的行为,即
#include <vector>
#define vector std::vector
int main() {
vector<int> v;
}
在哪里编译
#include <vector>
#include <utility>
#define vector std::vector
int main() {
vector<pair<int, int>> v;
}
除非指定了std::pair
,否则不会这样,用#define vector std::vector
替换using std::vector;