我收到以下错误:
'阵列'在命名空间' std'没有命名模板类型。
我将编译器更改为g ++ 4.9。还有问题。我想我可能有一个旧版本的std库,但我不确定如何继续修复它。
#ifndef DBINTERFACE_H_
#define DBINTERFACE_H_
#include "mysql_connection.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include "mysql_driver.h"
#include <array>
class DBInterface {
private:
double Found_Buffer[100][59];
int Found_Count;
double New_Buffer[100][59];
std::array<double, 5> BLAH;
int New_Count;
double M[59];
double B[59];
sql::mysql::MySQL_Driver *driver;
sql::Connection *con;
public:
DBInterface();
virtual ~DBInterface();
void Update();
void Search();
void Add2DB();
void Add2Buffer(double Found_Objects[][59], double New_Objects[][59]);
void Build();
/*
* To be added:
* void CollapseBuffer();
* void DetDynamic();
*
*/
};
#endif /* DBINTERFACE_H_ */
错误讯息:
17:20:06 **** Incremental Build of configuration Debug for project CANS ****
make all
Building file: ../src/DBInterface.cpp
Invoking: Cross G++ Compiler
g++ -I/home/derek/soci/include -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/DBInterface.d" -MT"src/DBInterface.d" -o "src/DBInterface.o" "../src/DBInterface.cpp"
In file included from /usr/include/c++/4.9/array:35:0,
from ../src/DBInterface.h:17,
from ../src/DBInterface.cpp:8:
/usr/include/c++/4.9/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support for the \
^
In file included from ../src/DBInterface.cpp:8:0:
../src/DBInterface.h:24:7: error: ‘array’ in namespace ‘std’ does not name a template type
std::array<double, 5> BLAH;
^
../src/DBInterface.cpp: In function ‘void Add2Buffer(double (*)[59], double (*)[59])’:
../src/DBInterface.cpp:44:6: warning: unused variable ‘NoOfFO’ [-Wunused-variable]
int NoOfFO;
^
../src/DBInterface.cpp:45:6: warning: unused variable ‘NoOfNO’ [-Wunused-variable]
int NoOfNO;
^
make: *** [src/DBInterface.o] Error 1
17:20:08 Build Finished (took 2s.464ms)
答案 0 :(得分:9)
请阅读编译器告诉您的内容!
/usr/include/c++/4.9/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
这告诉您已经包含了C ++ 11标头(在本例中为<array>
),但您没有在C ++ 11模式下进行编译。
它甚至会告诉您如何解决问题(使用-std=c++11
或-std=gnu++11
)。
后面的错误array
没有命名类型是因为您已经包含了C ++ 11标头而没有启用C ++ 11,所以如果您先修复 错误,然后更晚的消息就会消失。
当读取编译器错误从顶部开始并修复第一个错误时,不要只选择输出的随机部分来修复。以后的错误通常是由较早的错误引起的,所以先修复先前的错误。