---
title: "Över hunda fel. Fattar noll!"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/87494-över-hunda-fel-fattar-noll"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "Sebbe"
published: "2003-10-02T15:49:46.000Z"
updated: "2003-10-08T14:52:55.000Z"
replies: 9
views: 443
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/87494-över-hunda-fel-fattar-noll"
---

# Över hunda fel. Fattar noll!

## #1 — Sebbe, 2003-10-02T15:49Z

Har den här koden:

```
#include <iostream.h>

class Animal {
public:
	Animal() {}
	virtual ~Animal() {}
	void setName(char name) { itsName = name; }
	void setAge(int age) { itsAge = age; }
	virtual void speak() const { cout << "Makes some noice."; }
protected:
	int itsAge;
	char itsName;
};

class Cat : public Animal {
public:
	Cat(char name, int age) { setName(name); setAge(age); }
	~Cat() {} 
	void speak() const { cout << this->itsName << " meows.\n"; }
};

class Dog : public Animal {
public:
	Dog(char name, int age) { setName(name); setAge(age); }
	~Dog() {}
	void speak() const { cout << this->itsName << " woofs.\n"; }
};

int main() {
	Animal * djur;
	enum CHOICE { Cat = 1, Dog = 2 };

	cout << "Do you want a cat (1) or a dog (2)?";
	int val;
	cin >> val;

	if (val == Cat)
		djur = new Cat('C', 2);
	else if (val == Dog)
		djur = new Dog('D', 7);

	djur->speak();
	delete djur;
	return 0;
} // <-- Rad 45
```

och får felen

> Compiling...
> test.cpp
> C:\\Documents and Settings\\Sebastian\\Skrivbord\\C++\\test2\\test.cpp(38) : error C2061: syntax error : identifier 'Cat'
> C:\\Documents and Settings\\Sebastian\\Skrivbord\\C++\\test2\\test.cpp(40) : error C2061: syntax error : identifier 'Dog'
> C:\\Documents and Settings\\Sebastian\\Skrivbord\\C++\\test2\\test.cpp(45) : error C2143: syntax error : missing ';' before '}' (Detta får jag MASSOR av gånger)
> C:\\Documents and Settings\\Sebastian\\Skrivbord\\C++\\test2\\test.cpp(45) : fatal error C1003: error count exceeds 100; stopping compilation
> Error executing cl.exe.
> 
> test.exe - 102 error(s), 0 warning(s)

Fattar absolut ingenting!

Observera att jag är nybörjare på C++. ;)

Permalänk: https://www.webforum.nu/p/87494

## #2 — PeW, 2003-10-02T16:44Z

```
enum CHOICE { Cat = 1, Dog = 2 };

	cout << "Do you want a cat (1) or a dog (2)?";
	int val;
	cin >> val;

	if (val == Cat)
		djur = new Cat('C', 2);
	else if (val == Dog)
		djur = new Dog('D', 7);
```

Du bör bestämma dig för vad saker ska heta. Du har i CHOICE sagt att Cat är lika med det numeriska värdet 1. Men sen vill du skapa ett objekt Cat vilket leder till konflikt ...   mao räcker det med att du döper om dina enums till nåt annat för att få det att fungera.  Undvik iostream.h. Använd istället iostream utan h och ange  std:: före inmatning och utskrifter.  (std::cin) och (std::cout)

Permalänk: https://www.webforum.nu/p/1173589

## #3 — Sebbe, 2003-10-02T16:46Z

Tack så mycket!!
Har suttit och grubblat på det där i många timmar nu. :D

Permalänk: https://www.webforum.nu/p/1173594

## #4 — Sebbe, 2003-10-02T17:18Z

Fick ett till problem nu. Lika bra att fortsätta i den här tråden.

På raden

```
void speak() const { std::cout << this->itsName << " woofs.\n"; }
```

 får jag felmeddelandet 

> error C2679: binary '\<\<' : no operator defined which takes a right-hand operand of type 'const class std::basic_string\<char,struct std::char_traits\<char\>,class std::allocator\<cha
> r\> \>' (or there is no acceptable conversion)

Har bytt namnen i klasserna till typen string.

Permalänk: https://www.webforum.nu/p/1173611

## #5 — Engine^, 2003-10-02T17:50Z

**red.**
Jag läste just att mitt svar blev överflödigt eftersom

> **Sebbe skrev:**
>
> Har bytt namnen i klasserna till typen string.

Permalänk: https://www.webforum.nu/p/1173620

## #6 — Peter S, 2003-10-02T19:26Z

Har du inkluderat headerfilen *string*?

```
#include <string>
```

 :)

Permalänk: https://www.webforum.nu/p/1173679

## #7 — PeW, 2003-10-02T20:40Z

Skulle gissa på att det är felet, det som Peter S undrar  :)

Permalänk: https://www.webforum.nu/p/1173747

## #8 — Sebbe, 2003-10-03T16:58Z

Hade inkluderat string*.h*! Från och med nu tar jag bort alla h-inkluderingar! Tack grabbar! :D

Permalänk: https://www.webforum.nu/p/1174200

## #9 — aasah, 2003-10-07T15:10Z

> **Sebbe skrev:**
>
> Hade inkluderat string*.h*! Från och med nu tar jag bort alla h-inkluderingar! Tack grabbar! :D

OBS! I C++ är det så att om du inkluderar något från ett befintligt bibliotek, så skrivs det utan .h . Exempel:
\# include \<iostream\>
\# include \<string\>

Om du däremot skriver filerna MyC.cpp MyC.h och ska inkludera denna h-fil i motsvarande cpp-fil, så skrivs det:

\# include "myC.h"

Där ska alltså extension:et vara med.

Permalänk: https://www.webforum.nu/p/1179307

## #10 — Sebbe, 2003-10-08T14:52Z

> **aasah skrev:**
>
> > **Sebbe skrev:**
> >
> > Hade inkluderat string*.h*! Från och med nu tar jag bort alla h-inkluderingar! Tack grabbar! :D
>
> OBS! I C++ är det så att om du inkluderar något från ett befintligt bibliotek, så skrivs det utan .h . Exempel:
> \# include \<iostream\>
> \# include \<string\>
> 
> Om du däremot skriver filerna MyC.cpp MyC.h och ska inkludera denna h-fil i motsvarande cpp-fil, så skrivs det:
> 
> \# include "myC.h"
> 
> Där ska alltså extension:et vara med.

Jodå, det senare var jag medveten om. :)

Permalänk: https://www.webforum.nu/p/1179955

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/87494-över-hunda-fel-fattar-noll
