string不是特定文件的std成员

时间:2017-04-02 18:13:45

标签: c++ string 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,SDL.cpp只包含一些也没有任何包含文件的头文件

我想我在编译器链接器选项中有以下内容可能很重要:

-lmingw32 -lSDL2main -lSDL2 -lSDL2_ttf

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

我已经在其他类似的问题中搜索过一个解决方案,但是所有那些只是忘记包含字符串或者把它放在错误的位置的人......提前感谢您的帮助,并为冗长的问题道歉,如果我遗漏了任何重要信息。

1 个答案:

答案 0 :(得分:0)

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