Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


heeelp, ostream &operator<<(...);

Postades av 2004-12-16 12:45:17 - Tom Omvik, i forum c++, Tråden har 6 Kommentarer och lästs av 1032 personer

Detta felmedelanden får jag när jag försöker överlagra
& kompilera "friend ostream &operator<<()":

Error E2061 andgate.h 17: Friends must be functions or classes
Error E2139 andgate.h 17: Declaration missing ;
Error E2321 andgate.h 18 Declaration does not specify a tag or an
identifier
Error E2247 andgate.cpp 51: 'ANDgate::in' is not accessible in function
operator <<(ostream &, const ANDgate &)
Error E2247 andgate.cpp 51: 'ANDgate::out' is not accessible in function
operator <<(ostream &, const ANDgate &)

Jag använder kompilatorn Borland C++ 5.6, genom kommandoraden.
Vet ni vad jag gör för fel?
I C++ boken står det att man ska kunna överlagra operatorn ostream.

#ifndef _ANDGATE_H_
#define _ANDGATE_H_

const int ANDMAX=2;

class ANDgate
{
private:
int in[ANDMAX];
int out;
public:
ANDgate();
ANDgate(int x1, int x2);
int getout(const int x1, const int x2) const;
friend ostream &operator<<(ostream &os, const ANDgate &and);
};

#endif
-----------------------
#include <iostream>
#include "andgate.h"
using namespace std;

ANDgate::ANDgate()
{
for(int i=0; i<ANDMAX; i++)
in[i]=false;

out=false;
}

ANDgate::ANDgate(int x1, int x2)
{
in[0]=x1;
in[1]=x2;
out=ANDgate::getout(x1, x2);
}

int ANDgate::getout(const int x1, const int x2) const
{
if(x1==1 && x2==1)
return 1;
else if(x1<0 || x1>1 || x2<0 || x2>1)
{
cout<<"Error! Ingångarnas tillstånd får bara vara 0 eller 1.";
return 0;
}
else
return 0;
}

ostream &operator<<(ostream &os, const ANDgate &and)
{
os<<"Grinden AND:\n";
os<<"x1\tx2\tout\n";
//os<<and.in[0]<<"\t"<<and.in[1]<<"\t"<<and.out<<"\n";

return os;
}
-------------
#include <iostream>
#include "andgate.h"

using namespace std;

int main()
{
ANDgate och=ANDgate(1, 1);
cout<<och;

return 0;
}


Svara

Sv: heeelp, ostream &operator<<(...);

Postades av 2004-12-16 13:12:04 - Jesper Brännström

Mycket snyggare och mer lättläst om du använder dig av < code C++ > när du skriver din kod här i forumet.

Du har gjort helt rätt bortsett från att du glömt att lägga till using std::ostream; i din .h fil.


Svara

Sv:heeelp, ostream &operator<<(...);

Postades av 2004-12-17 17:06:24 - Tom Omvik

Oooh, den kod snutten har jag aldrig fått lära mig att man måste skriva för att få ostream att fungera.
Märkligt, har jag aldrig behövt skriva förrut, när jag läste på KTH. Det fungerade klanderfritt utan.

Varför måste man göra de nu vid nyare versioner av kompilatorer?

Ok, tack så mycket.


Svara

Sv: heeelp, ostream &operator<<(...);

Postades av 2004-12-17 17:17:20 - Jesper Brännström

Eftersom ostream ligger under ett namespace så måste man skriva så. Du kan även skriva using namespace std som du gjort i din fil där du har din main() metod. Detta är inte något nytt utan så har det alltid varit. Däremot kanske du inte använt dig av namespaces och då behöver man inte skriva detta utan då räcker det med att isotream är inkluderat innan.


Svara

Sv:heeelp, ostream &operator<<(...);

Postades av 2004-12-18 15:51:08 - Niklas Jansson

<b>>Detta är inte något nytt utan så har det alltid varit. </b>
Nej, det introducerades väl först 94 eller 98?

Sen bör man ju absolut inte använda using i det globala uttrymmet.
Skriv hellre std::ostream, överallt där du har ostream (etc.).


Svara

Sv: heeelp, ostream &operator<<(...);

Postades av 2004-12-18 18:06:35 - Jesper Brännström

<b>Nej, det introducerades väl först 94 eller 98?</b>
Det har du nog helt rätt i att det introducerades någon gång under 90-talet

<b>Sen bör man ju absolut inte använda using i det globala uttrymmet.</b>
Välldigt sällan det leder till något problem att använda using. I mindre projekt kan det till och med vara fördel att använda using för att göra koden mer lättläslig.


Svara

Sv: heeelp, ostream &operator<<(...);

Postades av 2004-12-19 00:11:50 - Per Persson

Nu skulle jag vilja länka till en diskussion jag och Niklas hade en gång om att använda using i det globala namnrummet, men hur hittar man den gamla tråden?


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 787
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies