相关疑难解决方法(0)

为什么我不应该在标题中加入"using namespace std"?

有人曾暗示不建议在头文件中执行此操作:

using namespace std;
Run Code Online (Sandbox Code Playgroud)

为什么不建议?

它是否会导致像这样的链接器错误:(为了方便而行换行)

error LNK2005: "public: __thiscall std::basic_string<char,struct 
std::char_traits<char>,class std::allocator<char> >::
~basic_string<char,struct std::char_traits<char>,class std::allocator<char> > 
(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) 
already defined in tools.lib(Exception.obj) 
Run Code Online (Sandbox Code Playgroud)

c++ using header-files

1
推荐指数
1
解决办法
1001
查看次数

链接器将代码分成.h和.cpp文件时出错

我有一个实现在c ++中打印出枚举值

如果我将所有代码放在.h文件中,一切都很顺利.如果我将函数实现分离到.cpp文件中,我会收到链接器错误.

这是我的主文件

#include <iostream>
#include <vector>
#include "Day.h"
using namespace std;

int main(){
    initializeDayNames();
    Day a = Clubs;
    cout << a;
}
Run Code Online (Sandbox Code Playgroud)

这是.h文件

#ifndef __Day__
#define __Day__

#include <iostream>
#include <vector>
#include <string>
using namespace std;

enum Day {Clubs, Hearts, Diamonds, Spades} ;

vector<string> DayNames = vector<string>();

ostream & operator<<(ostream & out, Day cs);

void initializeDayNames();

#endif
Run Code Online (Sandbox Code Playgroud)

和.cpp文件

#include <iostream>
#include "Day.h"
#include<string>
#include<vector>
using namespace std;

void initializeDayNames(){
    DayNames.push_back("Clubs");
    DayNames.push_back("Hearts");
    DayNames.push_back("Diamonds");
    DayNames.push_back("Spades");
}


ostream & operator<<(ostream & …
Run Code Online (Sandbox Code Playgroud)

c++ linker-errors

1
推荐指数
1
解决办法
845
查看次数

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;
};
Run Code Online (Sandbox Code Playgroud)

taco.h

#include <vector>

class OtherClass
{

public:
    vector<int> otherOrder;
};
Run Code Online (Sandbox Code Playgroud)

我得到关于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 ';'
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?我可以取消注释第二个矢量声明,它编译得很好.

c++ vector

1
推荐指数
1
解决办法
4757
查看次数

关于“使用命名空间标准”的问题?

最近我注意到,如果我不在程序中包含“ using namespace std”,而仅使用“ std :: cout”或“ std :: endl”,那么我的程序仍然可以编译吗?因此,如果我使用'std ::'前缀,是否甚至需要包括'using namespace std'?“ std ::”前缀是否调​​用using名称空间std?如果有人可以帮我解决这个问题,将不胜感激。

c++

1
推荐指数
1
解决办法
102
查看次数

标签 统计

c++ ×4

header-files ×1

linker-errors ×1

using ×1

vector ×1