Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c+中的向量编译错误+;_C++_Compiler Construction - Fatal编程技术网

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,就像你说的!谢谢我觉得这很简单!需要明确的是,头文件不应该有名称空间声明,而且它们可能也不应该包含在名称空间声明之后。