开发者

Syntax error: Array of Vectors in OO C++

开发者 https://www.devze.com 2023-04-11 01:49 出处:网络
I\'ve got an outline of a HashTable class I\'m trying to make.I\'m getting 3 errors output from Visual Studio, but I can\'t see the problem here.I\'m fairly new to OO in C++ so it\'s probably somethin

I've got an outline of a HashTable class I'm trying to make. I'm getting 3 errors output from Visual Studio, but I can't see the problem here. I'm fairly new to OO in C++ so it's probably something i've missed. It claims there is a problem with my array of vectors. The errors are:

error C2143: syntax error : missing ';' before '<'  line 10
error C2238: unexpected token(s) preceding ';'  line 10
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int   line 10

Here's my complete class, it's pretty empty right now:

#include <iostream>
#include <vector>
#include "stdafx.h"
using namespace std;

class HashTable
{
private:
  const static int buckets = 100;
  vector<int> hashTable[buckets];    //Internal storage

  int hash(int toHash);   //Performs hash function

public:
  HashTable();   //Constructor
  HashTable(int s);   //Constructor
  ~HashTable();   //Destructor

  void add(int toAdd);    //Adds an element to the HashTable
  void remove(int toDelete);    //Deletes an element from the HashTable
  bool search(int toSearch);    //Returns true if element in HashTable, false otherwise
  int getSize();   //Returns size of HashTable
  void print();    //Prints current state of the hashtable

  //TODO more methods...?




};

//Definitions...

HashTable::HashTable() 
{
}

HashTable::~HashTable() 
{
    //cout << "Destroyed" << endl;
}

void HashTable::add(int toAdd)
{

  //elements[hash(toAdd开发者_JAVA百科)] = toAdd;

}

void HashTable::remove(int toDelete)
{

}


bool HashTable::search(int toSearch)
{

}

int HashTable::getSize()
{
  //return size;
}


void HashTable::print()
{

}


int main()
{  

  return 0;
}


The C++ here is valid (once you fill in the empty functions). The problem is with how Visual C++ uses precompiled headers. When you use precompiled headers (the default setting), the Visual C++ compiler expects the first line of each implementation file to be #include "stdafx.h", and doesn't compile anything that appears before that.

This means the the include of <vector> in your code is ignored, and thus compiling vector<int> causes an error.

If you move the line #include "stdafx.h" to the top this should compile. Or you can disable precompiled headers in the project settings.

0

精彩评论

暂无评论...
验证码 换一张
取 消