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


Автор: papam 20.2.2006, 16:05
Помогите пожалуста найти ошибку,прога не выводит на экран ничего
Код

template <int MAX_VAL> 
class Counter
{
public:
  Counter(int val = 0) // constructor. default value - 0
  {
    m_val = val > MAX_VAL ? 0 : val;
  }
  ~Counter() {} // destructor

  int operator ++ (int) // postfix operator overloading
  {
    if(++m_val > MAX_VAL) m_val = 0;
    return m_val;
  }

private:
  int m_val;
};

int main()
{
  Counter<100> cnt;
  cnt++;
            
  Counter<100> cnt2(99);
  cnt2++;
  cnt2++;
  cout<<m_val<<"\n"
 

  return 0;
}


Автор: Romikgy 20.2.2006, 16:13
Имхо использование класса типа так с шаблоном
Код

template <class T>
class Stack
{
public:
    Stack(int = 10) ; 
    ~Stack() { delete [] stackPtr ; }
    int push(const T&); 
    int pop(T&) ;  
    int isEmpty()const { return top == -1 ; } 
    int isFull() const { return top == size - 1 ; } 
private:
    int size ;  // number of elements on Stack.
    int top ;  
    T* stackPtr ;  
} ;

Автор: Doc_d0s 20.2.2006, 16:15
попробуй так: cout<<cnt.m_val;

Автор: Coocky 20.2.2006, 16:26
Цитата(papam @ 20.2.2006, 16:05 Найти цитируемый пост)
cout<<m_val<<"\n"

И даже компилятор не ругается smile
Цитата(Doc_d0s @ 20.2.2006, 16:15 Найти цитируемый пост)
попробуй так: cout<<cnt.m_val;

smile


Цитата(papam @ 20.2.2006, 16:05 Найти цитируемый пост)
private:
  int m_val;

smile
Добавлено @ 16:28
1.Ды не можешь иметь доступ к члену класса таким образом
2.Ты НЕ можешь иметь доступ к закрытому члену класса через обьект класса. А только через функцию! smile

Автор: MAKCim 20.2.2006, 17:34
Код

template<int MAX_VAL> class Counter
{
...
public:
    operator int () const {return m_val;}
};

int main()
{
    Counter<100> cnt;
    cnt++;        
    Counter<100> cnt2(99);
    cnt2++;
    cnt2++;
    cout<<m_val<<"\n"
    return 0;
}

Автор: Coocky 20.2.2006, 18:04
Ребята, вы что-Паскальщики?? smile
Что вы пишите? smile
Код

private:
  int m_val;
};



Код

cout<<m_val<<"\n";

smile smile smile
Добавлено @ 18:09
Код

#include "stdafx.h"
template <int MAX_VAL> 
class Counter
{
public:
  Counter(int val = 0) // constructor. default value - 0
  {
    m_val = val > MAX_VAL ? 0 : val;
  }
  ~Counter() {} // destructor

  int operator ++ (int) // postfix operator overloading
  {
    if(++m_val > MAX_VAL) m_val = 0;
    return m_val;
  }

private:
  int m_val;
  public:
    int Return()
    {
    return m_val;
    }

};


int _tmain(int argc, _TCHAR* argv[])
{
    Counter<100> cnt;//тут переменная  m_val=0
    cnt++;  //тут переменная  m_val=1     
    Counter<100> cnt2(99);//тут переменная обьекта cnt2 m_val=99
    cnt2++;//тут переменная обьекта cnt2 m_val=100
    cnt2++;т//ут переменная обьекта cnt2 m_val=0
    //cout<<m_val<<"\n";Бред еще тот.....

    printf("%i",cnt.Return());
    printf("%i",cnt2.Return());

    return 0;
}

Автор: MAKCim 20.2.2006, 18:23
Цитата

Ребята, вычто-Паскальщики??

здесь я не понял smile
Цитата

Что вы пишите?
Код

private:
  int m_val;
};
...
cout<<m_val<<"\n";


я этот кусок кода вставил не посмотрев
конечно нужно
Код

cout<<cnt2<<endl;

Цитата

Код

    printf("%i",cnt.Return());
    printf("%i",cnt2.Return());


вообще, не знаю как других, но меня раздражает когда начинают мешать C и C++, зачем использовать C ф-ии в C++ - коде? (мое мнение, ни на кого наезжать не собираюсь smile )

Автор: papam 20.2.2006, 20:22
Компилятор ругается на #include "stdafx.h"

Автор: Ignat 20.2.2006, 21:16
Цитата(papam @ 20.2.2006, 20:22 Найти цитируемый пост)
Компилятор ругается на #include "stdafx.h"

А ты его создал? Если разрабатываешь в VS, то этот файл создается при создании проекта.

Автор: WERITAS 20.2.2006, 21:21
Цитата
Компилятор ругается на #include "stdafx.h"


О_О... А ты поставил "Use MFC in Shared DLL" во вкладке "General" у свойств? Я так понимаю это Win32Application....или нет? О_о

Автор: Ignat 20.2.2006, 21:27
Цитата(WERITAS @ 20.2.2006, 21:21 Найти цитируемый пост)
А ты поставил "Use MFC in Shared DLL" во вкладке "General" у свойств? Я так понимаю это Win32Application....или нет?

Да при чем тут MFC у автора, просто Coocky скомпилил пример в студии smile

Автор: WERITAS 20.2.2006, 21:40
Ignat,

Ах вот оно что. Я просто ваш пост не увидел, он появился почти что одновременно с моим : )

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