所以我创建了一个迷你个人库,其中包含一堆文件,这些文件包含一组与特定主题相关的方法(例如字符串操作,数学运算,时间等) 。这就是,对于缺乏一个更好的词,主容器文件看起来像:字符串不是特定文件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。
我已经在其他类似的问题中寻找解决方案,但所有那些只是忘记包含字符串或将其放在错误的地方...先感谢您的帮助,并道歉的冗长的问题和如果我遗漏了任何重要的信息。
你为什么包含'.cpp'文件? – ForceBru
你有没有关闭的cpp文件(time.cpp?)中的名称空间? – 1201ProgramAlarm
[为什么我不应该包含cpp文件,而是使用头文件?](http://stackoverflow.com/questions/1686204/why-should-i-not-include-cpp-files-and-instead-use-a -header)编译和链接cpp文件可以解决你的问题,或者给你一个更好的错误信息,你可以继续进行,但除此之外,你的问题在当前状态下是无法解析的。修复包含并回来编辑和更多信息。 – user4581301