Форум программистов, компьютерный форум CyberForum.ru

Problem with passing a list variable by a reference - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Глаз замылился, всё ли правильно? http://www.cyberforum.ru/cpp-beginners/thread957454.html
Доброго времени суток! Ребят, гляньте, нет утечки памяти: char **table = new char*; for (int i=0; i < ROWS; i++) table = new char;
C++ Зачёт по С++ Ребят помогите подготовиться к зачёту: 1)написать директиву препроцессора, которая реализует вставку собственного заголовочного файла с именем main 2)Определить имя константы:3,1415 3)Создать именованные константы TRUE, FALSE для обозначения логических результатов. Спасибо за ранее! http://www.cyberforum.ru/cpp-beginners/thread957453.html
C++ Используя динамический массив, обработать элементы
Дан массив целых чисел из n элементов. Удалить из него все элементы, в записи которых последняя цифра равна 0.
C++ MaxMin слова в строке
Ребята, помогите реализовать задачу: "В тексте, введенном пользователем с клавиатуры, найти самое длинное и самое короткое слово и вывести их". НЕЛЬЗЯ использовать strtok и классы(
C++ Неразрешенный внешний символ http://www.cyberforum.ru/cpp-beginners/thread957445.html
#include <math.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #include <iostream> #include <string> using namespace std; class Land
C++ Ищу литературу по OpenGL в среде Visual Studio собственно тема. просьба ногами не пинать, но нормальной литературы с уклоном в торону именно OpenGL не нашел. подробнее

Показать сообщение отдельно
Pro100Tom
 Аватар для Pro100Tom
69 / 28 / 7
Регистрация: 29.10.2012
Сообщений: 326

Problem with passing a list variable by a reference - C++

18.09.2013, 23:06. Просмотров 407. Ответов 12
Метки (Все метки)

Здравствуйте. Не знал, как нормально сформулировать заглавие на русском! В общем такая проблема. Есть C++ Win32 Empty Project Application. Программа: как всегда улучшаю свою предыдущую версию рендеринга объекта, считываемого из obj файла. На этот раз разделяю программу по отдельным файлам (классам). В главном файле создал переменную типа Vertex (этот тип я реализовал в другом классе (т.е. в другом файле (VertexClass))). Ну и создал List этих Vertex'ов.

Что я хочу сделать? У меня есть метод (опять же в другом, новом классе (ModelClass)), который открывает файл и считывает с него точки (vertex'ы). Так я хочу эти вертексы записать в list, который я пересылаю в этот метод как параметр-ссылка (pass by reference). Но вылезают ошибки, простые, но странные, на мой взгляд. Не могу никак решить. Гуглил: пишут, что порядок include файлов можно неправелен, (но это не по поводу конкретно моего случая). Все переставил двадцать раз, все варианты перепробовал - не помогает. В общем вот код самого главного окна:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "stdafx.h"
#include "SpinningObjects.h"
#include "ModelClass.h"
...
LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    RECT client;
    GetClientRect(hWnd,&client);
    list<VertexClass> vList, nList; 
    list<FaceClass> vfList, nfList;
 
    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_CREATE:     
        ModelClass *firstExample;
        firstExample = new ModelClass();
        firstExample->LoadModel(&vList, &nList, &vfList, &nfList);
        
        delete firstExample;
        firstExample = 0;
 
        break;
Вот сам ModelClass: header:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#ifndef _MODELCLASS_H_
#define _MODELCLASS_H_
 
#include <list>
#include "VertexClass.h"
#include "FaceClass.h"
 
class ModelClass
{
public:
    ModelClass();
    ~ModelClass();
    void LoadModel(list<VertexClass> *vList, list<VertexClass> *nList, list<FaceClass> *vfList, list<FaceClass> *nfList);
 
private: char buffer[50];
    char op;
    char slash;
};
 
#endif
Вот ModelClass cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include "ModelClass.h"
#include <iostream>
#include <fstream>
#include <sstream>
 
using namespace std;
 
ModelClass::ModelClass()
{
}
 
ModelClass::~ModelClass()
{
    
}
 
void ModelClass::LoadModel(list<VertexClass> *vList, list<VertexClass> *nList, list<FaceClass> *vfList, list<FaceClass> *nfList)
{
    VertexClass tempVertex, tempNormal;
    FaceClass tempVertexFace, tempNormalFace;
    
    /*list<VertexClass> vList, nList; 
    list<FaceClass> vfList, nfList;*/
 
    ifstream infile("teddy.obj", ifstream::in);
 
    while(!infile.eof())
    {
        infile.getline(buffer, 50);
        istringstream iss(buffer, istringstream::in);
        iss>>op;
        if (op=='v')
        {
            iss>>tempVertex.x>>tempVertex.y>>tempVertex.z;
            vList->push_back(tempVertex);
        }
        else if (op=='f')
        {
            iss>>tempVertexFace.a>>slash>>slash>>tempNormalFace.a>>tempVertexFace.b>>slash>>slash>>tempNormalFace.b>>tempVertexFace.c>>slash>>slash>>tempNormalFace.c;
            vfList->push_back(tempVertexFace);
            nfList->push_back(tempNormalFace);
        }   
        else if (op=='n')
        {
            iss>>tempNormal.x>>tempNormal.y>>tempNormal.z;
            nList->push_back(tempNormal);
        }
    }
    infile.close();
 
    return;
}
Вот Vertex header:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#ifndef _VERTEXCLASS_H_
#define _VERTEXCLASS_H_
 
class VertexClass
{
public:
    VertexClass();
    ~VertexClass();
 
    float x, y, z;
 
private:
 
};
 
#endif
Вот Vertex cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include "VertexClass.h"
 
VertexClass::VertexClass()
{
    
}
 
VertexClass::~VertexClass()
{
}
Face класс аналогичен vertex классу, только там вместо float, int, и вместо x,y,z - a,b,c

Проблема: вылезают 4 ошибки при билде:
Код
Error	1	error C2061: syntax error : identifier 'list'	c:\users\tomas\documents\visual studio 2012\projects\spinningobjects\spinningobjects\modelclass.h	40
Код
Error	3	error C2061: syntax error : identifier 'list'	c:\users\tomas\documents\visual studio 2012\projects\spinningobjects\spinningobjects\modelclass.h	40
Код
Error	4	error C2511: 'void ModelClass::LoadModel(std::list<_Ty> *,std::list<_Ty> *,std::list<FaceClass> *,std::list<FaceClass> *)' : overloaded member function not found in 'ModelClass'	c:\users\tomas\documents\visual studio 2012\projects\spinningobjects\spinningobjects\modelclass.cpp	20
Код
Error	2	error C2660: 'ModelClass::LoadModel' : function does not take 4 arguments	c:\users\tomas\documents\visual studio 2012\projects\spinningobjects\spinningobjects\spinningobjects.cpp	172
Помогите пожалуйста!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru