LINUX.ORG.RU

does not name a type...

 


0

1
#include "model.h"

Model m1;

компилирую g++ -c main.cpp -o main.o . Возвращает:

main.cpp:10:1: error: ‘Model’ does not name a type
 Model m1;
В папке файл model.h:
/*
 *  model.h
 *  (c) 2012 ViRVIG (http://www.virvig.eu)
 *  This source code is licensed under the creative commons CC BY-NC-SA 3.0
 *  license (see http://creativecommons.org/licenses/by-nc-sa/3.0/)
 *
 */

#ifndef MODEL_H
#define MODEL_H    

#include <vector>
#include <string>

struct Material {
  std::string name;
  float ambient[4];
  float diffuse[4];
  float specular[4];
  float shininess;
  Material();
};
#ifndef __MODEL__DEF__ 
extern
#endif
std::vector<Material> Materials
#ifdef __MODEL__DEF__
(1); 
#else
;
#endif

typedef double Vertex;
typedef double Normal;

struct Face{
  std::vector<int> v;   // Model::load() only generates triangles, though.
  std::vector<int> n;
  int mat;
  double normalC[3];
};

class Model {
 public:
  Model();
  ~Model();
  void load(std::string filename);
  const std::vector<Vertex>& vertices() const {
    return _vertices;
  }
  const std::vector<Normal>& normals() const {
    return _normals;
  }
  const std::vector<Face>& faces() const {
    return _faces;
  }
  void dumpStats() const;
  void dumpModel() const;
  
 private:
  std::vector<Vertex> _vertices;
  std::vector<Normal> _normals;
  std::vector<Face> _faces;

  void parseVOnly(std::stringstream & ss, std::string & block);
  void parseVN(std::stringstream & ss, std::string & block);
  void parseVT(std::stringstream & ss, std::string & block);
  void parseVTN(std::stringstream & ss, std::string & block);
};

#endif // MODEL_H



Последнее исправление: Trieforce (всего исправлений: 1)

Ответ на: комментарий от ziemin

Единственное, я естественно запихнул заглушку в main.cpp, а так всё твое.

int main() {return 0;}

ziemin ★★
()
Ответ на: комментарий от ziemin

Так и сделаю. Спасибо тебе добрый человек.

Trieforce
() автор топика
Ответ на: комментарий от Trieforce

Раз уж C++, то я бы поменял enum на enum class. Тогда не нужно специальное пространство имён для него, да и код почище станет. Но для этого нужно указать в флагах компилятора C++11.

tff
()
Ответ на: комментарий от tff

Или же запихать enum в структуру, тогда он не будет светить в глобальное пространство имён.

one_more_hokum ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.