Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Использование класов


Автор: dzirtt 18.4.2011, 18:55
Может тему не совсем корректно назвал ,но к сожалению не знаю как точно назвать.

В чем суть создал 2 класса storeMas, InputMenu

Соответственно везде include прописал, из main вызываются оба класса как положено, 
storeMas f(/*аргументы*/) , и дальше соответственно методы вызываю, со вторым классом также все работает.
Но как только в секции Private класса InputMenu прописываю storeMas f()  (#include "storeMas.h" прописан)
Компилятор плюется "Синтаксическая ошибка:константа" (при вызове из main все норм компилятор молчит)

предупреждаю вопросы Visual studio 2008 c++

читал про дружественные классы но они вроде позволяют получить доступ к методам другого класса напрямую,
а ка сделать чтобы можно было как в main объявить переменную класса storeMas и с ней работать.

Заранее спасибо.

Автор: Cheloveck 18.4.2011, 20:08
Может код покажешь? Или гадать будем? И мессадж об ошибке сюда. Мы умеем читать, и заморский язык нам не страшен, не переживай.

Автор: dzirtt 18.4.2011, 20:20
error C2059: синтаксическая ошибка: константа

заголовочный файл storeMas
Код


#pragma once
#include <vector>


using namespace std;

class storeMas
{
public:
    storeMas(int size);
    ~storeMas(void);
    

    int setIstore(const int& value,const int& index){iStore.at(index)=value; return 0;};
    int setcStore(const int& value,const int& index){cStore.at(index)=value; return 0;};
    int getIstore(const int &index){return iStore.at(index);};
    int getcstore(const int &index){return cStore.at(index);};
    
    int sizeIstore(void)const {return iStore.size();};
    int resizeIstore(const int &size) {iStore.resize(size); return 0;};
        
private:
    
    vector <int> iStore;
    vector <char> cStore;
};



заголовочный файл inputMenu

Код

#pragma once
#include "storeMas.h"



class InputMenu
{
public:
    
    friend: storeMas();
    InputMenu();
    ~InputMenu(void);

private:    
    storeMas f(10);//вот тут ошибка при этом в main работает

    int const showMenu(void);
    int checkselect(void);
};



Автор: Cheloveck 18.4.2011, 23:11
Нельзя вызывать конструктор в объявлении поля. Используй списки инициализации.

Автор: dzirtt 19.4.2011, 04:44
Спасибо помогло

исправленный код

Код

#pragma once
#include "storeMas.h"
class InputMenu
{
public:
    
    InputMenu():f(10);    //вызов конструктора класса storeMas для инициализации c
    ~InputMenu(void);
private:    
   
     storeMas f();            //объявление переменной класса storeMas
    int const showMenu(void);
    int checkselect(void);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)