2013-07-17 2 views
-2

У меня есть этот код:пользователя в основной доступ к функциям членов

#include <iostream> 
#include <string> 
#include "header8.h" 

using namespace std; 

int main() 
{ 
    Counter test; 
    string input; 

    cout << "Enter a string\n"; 
    getline(cin, input); 
    test.countcharacters(); 
    test.countnumbers(); 
} 

void Counter::countcharacters(){ 
    for(unsigned int i=0; i<input.length(); i++){ 
     if(input.at(i) == 'a'){ 
      alphabet[0]++; 
     } 
    } 
} 

void Counter::countnumbers(){ 
    for(unsigned int i;i<input.length();i++){ 
     if(input.at(i) == '0'){ 
      numbers[i]++; 
     } 
    } 
} 

Моя ошибка:

Когда я вхожу мою строку, значение всегда возвращает 0. Любая идея, почему?

+0

Пожалуйста, открепите свой код так, чтобы он был доступен для чтения. –

+0

И четыре пропавших брекета были бы хорошими. – chris

+2

Из того, что я могу сказать, 'test' вообще не знает« вход ». Я бы сказал, что если он компилируется, он использует некоторую строку по умолчанию. – chris

ответ

1

Опубликовать свое определение класса Counter Как один из комментариев правильно сформулирован, я не вижу, чтобы счетчик пути не видел один и тот же вход var.

Edit: затем на основе кода исправление должно быть заменить в главном

getline(cin, input); 

с

getline(cin, test.input); 

и удалить

string input; 
+0

Вот ссылка на мои определения классов: http://pastebin.com/3Y5Jhsk0 – PhDre

0

Вот мое решение.

int main() 
{ 
    string input; 
    cout << "Enter a string\n"; 
    getline(cin, input); 

    Counter test(input); // highlight 
    test.countcharacters(); 
    test.countnumbers(); 
} 

Вам необходимо вызвать конструктор класса Counter и передача «вход» в Counter::input (конечно, вам нужно добавить конструктор со строкой в ​​качестве параметра). Или вы можете написать функцию, указанную ниже:

void Counter::setInput(string _input) 
{ 
    this.input = _input; 
} 

и вызвать эту функцию, прежде чем вы начнете считать.

Смежные вопросы