请注意这个代码会给我带来很多错误:
//Neuron.h File
#ifndef Neuron_h
#define Neuron_h
#include "vector"
class Neuron
{
private:
vector<double>lstWeights;
public:
vector<double> GetWeight();
};
#endif
//Neuron.cpp File
#include "Neuron.h"
vector<double> Neuron::GetWeight()
{
return lstWeights;
}
有人可以告诉我它有什么问题吗?
答案 0 :(得分:16)
这是:
#include <vector>
你使用尖括号,因为它是standard library,“”的一部分,只是让编译器首先在其他目录中查找,这是不必要的慢。它位于名称空间std
:
std::vector<double>
您需要在正确的命名空间中限定矢量:
class Neuron
{
private:
std::vector<double>lstWeights;
public:
std::vector<double> GetWeight();
};
std::vector<double> Neuron::GetWeight()
使用typedef更简单:
class Neuron
{
public:
typedef std::vector<double> container_type;
const container_type& GetWeight(); // return by reference to avoid
// unnecessary copying
private: // most agree private should be at bottom
container_type lstWeights;
};
const Neuron::container_type& Neuron::GetWeight()
{
return lstWeights;
}
另外,不要忘记成为const-correct:
const container_type& GetWeight() const; // const because GetWeight does
// not modify the class
答案 1 :(得分:2)
首先,#include <vector>
。注意尖括号。
其次,它是'std :: vector',而不仅仅是'vector'(或者使用'using'指令)。
第三,不要按值返回向量。这很重,通常是完全没必要的。返回[const]引用而不是
class Neuron {
private:
std::vector<double> lstWeights;
public:
const vector<double>& GetWeight() const;
};
const std::vector<double>& Neuron::GetWeight() const
{
return lstWeights;
}
答案 2 :(得分:1)
#ifndef Neuron_h
#define Neuron_h
#include "vector"
using std::vector;
class Neuron
{
private:
vector<double>lstWeights;
public:
vector<double> GetWeight();
};
#endif
试试
答案 3 :(得分:0)
尝试用vector
,la:
std::vector
std::vector<double> lstWeights;
问题是标准容器在标准命名空间中,所以你必须以某种方式让编译器知道你想要使用标准命名空间的vector版本;你可以采用以下几种方式之一,std::vector
是最明确的。
答案 4 :(得分:0)
使用vector<double>
前缀std::
,例如std::vector<double>
,应该做的工作。