Это странно. Я создал вектор просто отлично в одном классе, но не могу создать его в другом классе. Он представление о том, что у меня есть:C++ не может создать вектор
main.h
#include <Windows.h>
#include <ShellAPI.h>
#include <vector>
#include <string>
#include <iostream>
#include "taco.h"
class MyClass
{
public:
int someint;
vector<int> myOrder;
};
taco.h
#include <vector>
class OtherClass
{
public:
vector<int> otherOrder;
};
И я получаю ошибки компиляции относительно вектора декларации в taco.h:
error C2143: syntax error : missing ';' before '<'
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2238: unexpected token(s) preceding ';'
Что мне здесь недостает? Я могу раскомментировать эту вторую декларацию вектора, и она отлично компилируется.
Это говорит мне, что некоторые .h файл 'используя патезрасе,' в нем где-то, что, как правило, плохая идея. 'использование' никогда не должно выполняться в заголовках, поскольку оно испортит пространства имен для любого .cpp-файла, который прямо или косвенно включает этот заголовок. Оставьте 'использование' только для исходных файлов, где эффекты локальны. –