2017-04-02 36 views
-3

所以我创建了一个迷你个人库,其中包含一堆文件,这些文件包含一组与特定主题相关的方法(例如字符串操作,数学运算,时间等) 。这就是,对于缺乏一个更好的词,主容器文件看起来像:字符串不是特定文件std的成员

#include <iostream> 
#include <fstream> 
#include <conio.h> //_getch() ("Pauses" the program) 
#include <stdlib.h> //atoi (Converts string to integer) 
#include <io.h> 
#include <stdio.h> 
#include <vector> 
#include <string> //I have also tried including cstring and string.h, but that didn't help 
#include <sstream> 
#include <windows.h> 
#include <ctime> 
#include <math.h> 
#include <cmath> 
#include <algorithm> 

#include "SDL2/SDL.h" 
#include "SDL2/SDL_ttf.h" 

#include "numbers.cpp" 
#include "strings.cpp" 
#include "time.cpp" 
#include "SDL.cpp" 
#include "console.cpp" 
#include "files.cpp" 

如果任何人无法分辨,所有我做的文件是下面的一切,包括numbers.cpp。其余的是C++库或中间的2个SDL文件。

std :: string在console.cpp以前的所有文件中都有效。有任何std :: string,无论它是一个参数,函数声明的变量,都给了我'字符串不是std的成员'错误。 如果我从构建目标和项目中排除console.cpp,每当我尝试使用std :: string时,files.cpp都会有相同的错误。但是,如果我把SDL.cpp放在console.cpp和files.cpp之前,它的std :: strings工作正常。

无下的文件有不同的SDL.cpp,只包括一些头文件在其中任何的#include也没有任何包含文件

我想这可能是重要的,我这样做有以下在我的编译器连接选项:

-lmingw32 -lSDL2main -lSDL2 -lSDL2_ttf 

我也有一个搜索目录到SDL2包括文件夹,但我不认为这是问题。 构建类型是静态库(这可能是问题,但是当我构建为GUI应用程序,动态库或本机时,它也有相同的问题,我对构建类型不太了解,对C++来说是相当新颖的),而我使用Code Blocks IDE。

我已经在其他类似的问题中寻找解决方案,但所有那些只是忘记包含字符串或将其放在错误的地方...先感谢您的帮助,并道歉的冗长的问题和如果我遗漏了任何重要的信息。

+6

你为什么包含'.cpp'文件? – ForceBru

+0

你有没有关闭的cpp文件(time.cpp?)中的名称空间? – 1201ProgramAlarm

+1

[为什么我不应该包含cpp文件,而是使用头文件?](http://stackoverflow.com/questions/1686204/why-should-i-not-include-cpp-files-and-instead-use-a -header)编译和链接cpp文件可以解决你的问题,或者给你一个更好的错误信息,你可以继续进行,但除此之外,你的问题在当前状态下是无法解析的。修复包含并回来编辑和更多信息。 – user4581301

回答

0

解决 - 问题是因为我包括.cpp文件。将它们更改为头文件使其工作。