所以我創建了一個迷你個人庫,其中包含一堆文件,這些文件包含一組與特定主題相關的方法(例如字符串操作,數學運算,時間等) 。這就是,對於缺乏一個更好的詞,主容器文件看起來像:字符串不是特定文件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