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

Классы, ошибка компиляции - C++

Восстановить пароль Регистрация
 
yuik
0 / 0 / 0
Регистрация: 27.11.2009
Сообщений: 11
23.12.2009, 22:22     Классы, ошибка компиляции #1
Есть задачка

Разработать класс для представления ЦЕЛЫХ чисел в виде «по модулю максимальное простое плюс минимальный остаток» (20=19+1).

Класс должен включать весь необходимый интерфейс: конструкторы, перегрузку операций (в том числе + , - , =), другие необходимые методы.

Продемонстрировать:
выполнение цепочки для сложения и вычитания объектов класса и целых чисел;
цепочки присваиваний.
Разработать функцию:
для сортировки массива объектов; (ввод тестовых массивов объектов – из файла);
для сложения элементов массива, являющихся четными числами.
(ввод тестовых массивов объектов – из файла строкой вида 23+2);

Я начал ее делать, собственно пока пытаюсь ток этот класс просто создать, без перегрузок и тп.
Требуется многофайловое приложение

что получилось пока что
main.cpp:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
#include "integer.h"
#include <fstream>
 
void main()
{
    int n;
cout<<"inter the number:";
    cin>>n;
Integer i1();
i1.setNum(n);
  
 
 
}
integer.h:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef integer_h
#define integer_h
class Integer {
private:
    int n, d;
    
public:
    Integer(int, int);
 
 
     void setNum(int); // присваивает
    
};
 
#endif
integer.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
#include <iostream>
using namespace std;
#include "integer.h"
void Integer::setNum(int a)
{   
    
int b = (a < 0)? -a: a;
bool flag = true;
while (flag)
{
  flag = false;
  for (int i = 2; i < b/2; i++) flag = flag || (b%i == 0);
  b--;
}
b++;
 
n = (a < 0)? -b: b;
d = (a < 0)? a + b: a - b;
}
 
 
Integer::Integer(int pn = 0, int pd = 0) 
{n = pn; d = pd;}

Выдает ошибку на строку
C++
1
i1.setNum(n);
1>d:\си\z\z\z\main.cpp(12) : error C2228: left of '.setNum' must have class/struct/union

В чем дело?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2009, 22:22     Классы, ошибка компиляции
Посмотрите здесь:

ошибка компиляции C++
Ошибка при компиляции. Где ошибка? (Работа с классом) C++
C++ Ошибка компиляции
Ошибка компиляции C++
ошибка компиляции C++
Ошибка компиляции C++
C++ Ошибка в компиляции
C++ Ошибка компиляции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8272 / 3491 / 142
Регистрация: 03.07.2009
Сообщений: 10,707
24.12.2009, 21:35     Классы, ошибка компиляции #2
Цитата Сообщение от yuik Посмотреть сообщение
C++
1
2
Integer i1();
i1.setNum(n);
Кто так создает объекты? Вообще-то они создаются так
C++
1
2
Integer* integer = new Integer(5, 5);
integer->SetNum(20);
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
24.12.2009, 23:07     Классы, ошибка компиляции #3
Цитата Сообщение от M128K145 Посмотреть сообщение
Кто так создает объекты? Вообще-то они создаются так
Динамические...
Цитата Сообщение от yuik Посмотреть сообщение
В чем дело?
У тебя конструктор с параметрами...
C++
1
Integer(int, int);
Если под записью
C++
1
Integer i1();
подразумевался конструктор по-умолчнию, то его можно использовать только, если у тебя нет конструкторов определёных явным образом + это выглядело бы так
C++
1
Integer i1;
А то, что у тебя, это объявление прототипа функции i1, которая возвращает объект типа Integer.
Yandex
Объявления
24.12.2009, 23:07     Классы, ошибка компиляции
Ответ Создать тему
Опции темы

Текущее время: 17:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru