C++ c+中的向量编译错误+;
我卡住了!我有这个非常简单的测试代码,但我无法编译它!我以前多次使用相同的代码,但现在它不起作用了C++ c+中的向量编译错误+;,c++,compiler-construction,C++,Compiler Construction,我卡住了!我有这个非常简单的测试代码,但我无法编译它!我以前多次使用相同的代码,但现在它不起作用了 我有一个简单的程序 #include <vector> #include <iostream> #include "Rswap.h" using namespace std; int main(){ Rswap test(); cin.get(); return 0;} #包括 #包括 #包括“Rswap.h” 使用名称空间std; int main(){ Rsw
我有一个简单的程序
#include <vector>
#include <iostream>
#include "Rswap.h"
using namespace std;
int main(){
Rswap test();
cin.get();
return 0;}
#包括
#包括
#包括“Rswap.h”
使用名称空间std;
int main(){
Rswap测试();
cin.get();
返回0;}
然后是rswap.cpp
#include <vector>
#include "Rswap.h"
Rswap::Rswap(){
V.push_back(9);
};
#包括
#包括“Rswap.h”
Rswap::Rswap(){
V.推回(9);
};
然后是rswap.h
#ifndef Rswap_h
#define Rswap_h
class Rswap{
public:
vector<int>V;
Rswap();
};
#endif
\ifndef Rswap\u h
#定义Rswap_h
类Rswap{
公众:
向量;
Rswap();
};
#恩迪夫
我正在使用VisualStudio2008。是不是有什么明显的错误,我错过了,或者可能是什么!正如我所说,我已经在几个不同的场合使用了这个片段,我找不到它和那些有效的片段之间的任何区别。。。
我两个都试过了
vectorV
;和向量V代码>没有任何运气
我已经盲目地盯着这个看了一段时间了,所以我觉得最好在这里问一下
rswap.h(7) : error C2143: syntax error : missing ';' before '<'
rswap.h(7) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
rswap.h(7) : error C2238: unexpected token(s) preceding ';'
rswap.h(7):错误C2143:语法错误:缺少“;”在“之前的#包括“Rswap.h”
,您没有使用名称空间std声明
还没有,因此Rswap.h中对向量的引用必须使用名称空间限定。只需使用名称空间前缀声明向量
class Rswap{
public:
std::vector<int>V;
Rswap();
};
class-Rswap{
公众:
std::vectorV;
Rswap();
};
另外,我建议您从Rswap.h中包含,而不是依赖于使用Rswap.h的人来获得正确的包含顺序
还没有,因此Rswap.h中对向量的引用必须使用名称空间限定。只需使用名称空间前缀声明向量
class Rswap{
public:
std::vector<int>V;
Rswap();
};
class-Rswap{
公众:
std::vectorV;
Rswap();
};
另外,我建议您从Rswap.h中选择#include
,而不是依赖于使用Rswap.h的人来获得正确的#include
顺序。啊,您的使用名称空间std
来得太晚了-它应该在Rswap.h include之前插入。无论如何,写std::vector要好得多。啊,你的使用名称空间std来的太晚了-它应该在rswap.h include之前插入。无论如何,写std::vector要好得多。应该是这样
std::vector<int>V;
std::vectorV;
应该是
std::vector<int>V;
std::vectorV;
您需要#包含在rswap.h.您需要#包含在rswap.h.快速问题-尝试向量V
?(在“>”和“V”之间留有空格)。这可能不会解决您的问题,但最好将#include
包含在您需要的rswap.h文件中-强制所有rswap客户端知道这样做是不礼貌的,可能是不切实际的。这与您的问题无关,但请注意rswap test()
声明一个返回Rswap
对象的函数。要声明Rswap
对象,请使用Rswap测试代码>(没有括号)。@Philipp,哎呀,这是早期测试中的一个打字错误..快速提问-尝试了vectorv
?(在“>”和“V”之间留有空格)。这可能不会解决您的问题,但最好将#include
包含在您需要的rswap.h文件中-强制所有rswap客户端知道这样做是不礼貌的,可能是不切实际的。这与您的问题无关,但请注意rswap test()
声明一个返回Rswap
对象的函数。要声明Rswap
对象,请使用Rswap测试代码>(没有括号)。@Philipp,哎呀,这是早期测试中的一个输入错误。这解决了问题,但我知道我在没有std::前缀的情况下做到了这一点!这是因为我在早期版本中声明了namespace std,就像你说的!谢谢我觉得这很简单!需要明确的是,头文件不应该有名称空间声明,而且它们可能也不应该包含在名称空间声明之后。这解决了问题,但我知道我在没有std::前缀的情况下做到了这一点!这是因为我在早期版本中声明了namespace std,就像你说的!谢谢我觉得这很简单!需要明确的是,头文件不应该有名称空间声明,而且它们可能也不应该包含在名称空间声明之后。