我正在尝试创建一个具有类型成员的类std::vector
,并且我希望在创建此类的实例时用数字 2 填充此向量:
#include <vector>
using namespace std;
class primes{
private:
vector <int> myvec;
myvec.push_back(2);
};
但是编译器给了我:
错误:“myvec”没有命名类型
我正在尝试创建一个具有类型成员的类std::vector
,并且我希望在创建此类的实例时用数字 2 填充此向量:
#include <vector>
using namespace std;
class primes{
private:
vector <int> myvec;
myvec.push_back(2);
};
但是编译器给了我:
错误:“myvec”没有命名类型
myvec.push_back(2);
应该在一个方法里面。
您不能像以前那样将其写在类声明中。
例子:
class primes
{
public:
void Add( int num )
{
myvec.push_back( num ); // is in a method
}
private:
vector <int> myvec;
// myvec.push_back( num ); // <-- Illegal in c++
};
如果您使用 C++11 并且想要初始化包含值 2 的向量:
class primes
{
private:
vector <int> myvec{2};
// ^^^
};
class primes{
private:
vector <int> myvec;
myvec.push_back(2); // <-- this can not be placed here
};
编译器期望有成员或方法(成员函数)的声明/定义。您不能在那里放置诸如myvec.push_back(2);
. 这必须放在某个方法的主体内:
class primes {
private:
std::vector<int> myvec;
public:
void addPrime(int num) {
myvec.push_back(num);
}
};
或者如果您想构建已经包含数字 2的primes
with实例:vector
class primes {
public:
primes() : myvec(std::vector<int>(1, 2)) { }
private:
std::vector<int> myvec;
};
或者如果您需要用更多的向量填充此向量:
int PRIMES[] = { 1, 2, 3, 5, 7 };
const int PCOUNT = sizeof(PRIMES) / sizeof(PRIMES[0]);
class primes {
public:
primes()
: myvec(std::vector<int>(PRIMES, PRIMES + PCOUNT)) { }
private:
std::vector<int> myvec;
};