2017-04-02 54 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文件。將它們更改爲頭文件使其工作。

相關問題