-1

我正在尝试创建一个具有类型成员的类std::vector,并且我希望在创建此类的实例时用数字 2 填充此向量:

#include <vector>
using namespace std;
class primes{
   private:
     vector <int> myvec;
     myvec.push_back(2);
};

但是编译器给了我:

错误:“myvec”没有命名类型

4

2 回答 2

3

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};
     //                ^^^
};
于 2013-10-06T21:15:15.637 回答
3
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的primeswith实例: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;
};
于 2013-10-06T21:19:57.790 回答