Gå til innhold

har du en kode som ikke virker? post den her!


Anbefalte innlegg

Videoannonse
Annonse
Jeg passet på å kompilere ...

Legg merke til at gcc test.c -o test /både/ er kompilering og linking .. derfor unresolved externals. Kommer ganske klart frem i første linken ovenfor.

 

bobafett: Du spiller Enemy Territory! heh

 

Edit2:

anderlin (under): N.P. :]

Endret av søppel
Lenke til kommentar
Gjest Slettet-8fx0y6VV

Jeg holder paa aa leke meg med boken Accelerated C++, og har naa stott paa et lite problem. Denne koden vill ikke kompilere:

(Jeg bruker nyeste version av GCC)

I vec.cpp har jeg laget meg min egen versjon av vector vector biblioteket

og i str.cpp har jeg laget min egen versjon av string biblioteket .

Jeg er ganske sikker paa at vec virker, men er usikker paa resten

 

main.cpp

#include <iostream>
#include "str.cpp"

using namespace std;

int main()
{
 Str foo;
 foo = "Hei! Virker dette?";
 cout << foo << endl;
}

 

str.cpp:

#include <algorithm>
#include <iostream>
#include <iomanip>
#include <ios>
#include <algorithm>
#include <string>
#include <vector>
#include <stdexcept>
#include <cctype>
#include <iterator>
#include <memory>
#include "vec.cpp"

using namespace std;

class Str
{
 // venner
   friend istream& operator>>(istream&, Str&);
   
 public:
   typedef Vec<char>::size_type size_type;
   
   // constructors
   Str() {  }
   Str(size_type n, char c): data(n, c) {  }
   Str(const char* cp) { copy(cp, cp+strlen(cp), back_inserter(data)); }
   template <class In> Str(In b, In e) { copy(b, e, back_inserter(data)); }
   
   // operators
   char& operator[](size_type i) { return data[i]; }
   const char& operator[](size_type i) const { return data[i]; }
   Str& operator+=(const Str& s) {  
     copy(s.data.begin(), s.data.end(), back_inserter(data));
     return *this;
   }
   operator char*();
   operator const char*() const;
   
   // diverse
   size_type size() const { return data.size(); }
   
 private:
   Vec<char> data;
};

//definering av funksjoner
  // operators
   ostream& operator<<(ostream&, const Str&);
   Str operator+(const Str&, const Str&);

// resten av funksjonene
ostream& operator<<(ostream& os, const Str& s)
{
 for (Str::size_type i = 0; i != s.size(); ++i)
   os << s[i];
 return os;
}

istream& operator>>(istream& is, Str& s)
{
 //s.data.clear();
 
 char c;
 while (is.get(c) && isspace(c))
  ;
 
 if (is)
 {
   do s.data.push_back(c);
   while (is.get(c) && !isspace(c));
   
   if (is)
     is.unget();
 }
 
 return is;
}

Str operator+(const Str& s, const Str& t)
{
 Str r = s;
 r += t;
 return r;
}

 

vec.cpp

#include <algorithm>
#include <iostream>
#include <iomanip>
#include <ios>
#include <algorithm>
#include <string>
#include <vector>
#include <stdexcept>
#include <cctype>
#include <iterator>
#include <memory>

using namespace std;

template <class T> class Vec {
 public:
   typedef T* iterator;
   typedef const T* const_iterator;
   typedef size_t size_type;
   typedef T value_type;
   typedef T& reference;
   typedef const T& const_reference;
   
   Vec() { create(); }
   explicit Vec(size_type n, const T& t = T()) { create(n, t); }
   Vec(const Vec& v) { create(v.begin(), v.end()); }
   Vec& operator=(const Vec&); // as defined in $11.3.2/196
   ~Vec() { uncreate(); }
   
   T& operator[](size_type i) { return data[i]; }
   const T& operator[](size_type i) const { return data[i]; }
   
   void push_back(const T& t)
   {
     if (avail == limit)
       grow();
     unchecked_append(t);
   }
   
   size_type size() const { return avail - data; }
   
   iterator begin() { return data; }
   const_iterator begin() const { return data; }
   
   iterator end() { return avail; }
   const_iterator end() const { return avail; }
   
 private:
   iterator data;
   iterator avail;
   iterator limit;
   
   allocator<T> alloc;
   
   void create();
   void create(size_type, const T&);
   void create(const_iterator, const_iterator);
   
   void uncreate();
   
   void grow();
   void unchecked_append(const T&);
};

template <class T> void Vec<T>::create()
{
 data = avail = limit = 0;
}

template <class T> void Vec<T>::create(size_type n, const T& val)
{
 data = alloc.allocate(n);
 limit = avail = data + n;
 uninitialized_fill(data, limit, val);
}

template <class T> void Vec<T>::create(const_iterator i, const_iterator j)
{
 data = alloc.allocate(i, j);
// endret til unini fra ini
 limit = avail = uninitialized_copy(i, j, data);
}

template <class T> Vec<T>& Vec<T>::operator=(const Vec& rhs)
{
 if (&rhs = this)
 {
   uncreate();
   create(rhs.begin(), rhs.end());
 }
 return *this;
}

template <class T> void Vec<T>::uncreate()
{
 if (data)
 {
   iterator it = avail;
   while (it != data)
     alloc.destroy(--it);
   alloc.deallocate(data, limit - data);
 }
 data = limit = avail = 0;
}

template <class T> void Vec<T>::grow()
{
 size_type new_size = max(2 * (limit - data), ptrdiff_t(1));
 iterator new_data = alloc.allocate(new_size);
 iterator new_avail = uninitialized_copy(data, avail, new_data);
 
 uncreate();
 
 data = new_data;
 avail = new_avail;
 limit = data + new_size;
}

template <class T> void Vec<T>::unchecked_append(const T& val)
{
 alloc.construct(avail++, val);
}

 

*** EDIT ***

Oppgradert koden litt

Endret av rapt0r
Lenke til kommentar

for meg virker det som om du har glemt aa definere operator= for Str, da er det jo ikke saa rart hvis det ikke funker aa gjoere Str = "bahaha"

ellers er det jo lurt aa si HVA som ikke virker.

tror heller ikke det smarteste du gjoer er aa ha stringrepresentasjonen som en vektor.

 

typedef T* iterator huhu

Lenke til kommentar
Gjest Slettet-8fx0y6VV

Jeg har gjort litt mere testing, og funnet ut at vec.cpp og main.cpp har ingen feil. Og saa fant jeg ut at alle feilene ligger i str.cpp.

Jeg fant ogsaa noen fil i koden selv, men den kompilerer fortsatt ikke. (koden er oppgradert i min forste post)

 

Hva som skjer naar jeg kompilerer:

[espen@localhost c12]$ c++ eks1.cpp -o eks1
vec.cpp: In member function `void Vec<T>::create(const T*, const T*) [with T = char]':
vec.cpp:26:   instantiated from `Vec<T>::Vec(const Vec<T>&) [with T = char]'
str.cpp:82:   instantiated from here
vec.cpp:79: error: invalid conversion from `const char*' to `unsigned int'
vec.cpp:79: error:   initializing argument 1 of `_Tp* __gnu_cxx::new_allocator<_Tp>::allocate(size_t, const void*) [with _Tp = char]'

Lenke til kommentar
  • 2 uker senere...
//denne koden virker men dere ser jo at jeg har brukt if og else problemet er at du ikke får mulkighet til å skrive svaret

Det er jo ikke veldig rart :nei:. Hvorfor gjør du ikke noe med det, hvis du har lyst til å skrive svaret? Hva er egentlig vitsen med de if og else greiene dine?

 

Jeg er helt sikker på at den ikke virker.

 

Uansett, hva er det du prøver å oppnå?

Si det du!

 

Edti: Burde slutte å disse html-liknende greiene for hånd jeg ass. *sukk*

Endret av zirener
Lenke til kommentar
//denne koden virker men dere ser jo at jeg har brukt if og else problemet er at du ikke får mulkighet til å skrive svaret

Det er jo ikke veldig rart :nei:. Hvorfor gjør du ikke noe med det, hvis du har lyst til å skrive svaret? Hva er egentlig vitsen med de if og else greiene dine?

 

Jeg er helt sikker på at den ikke virker.

 

Uansett, hva er det du prøver å oppnå?

Si det du!

det skal bli et matte regne program har fikset det nå

Lenke til kommentar
det skal bli et matte regne program har fikset det nå

Få se koden, da :) Matte regne programmer (...) er alltid gøyale.

//man kan vel kalle dette en slags kalkulator

det er vel en el forandring.

 

 

 

 

#include "stdafx.h"

 

 

int _tmain(int argc, _TCHAR* argv[])

{

std::cout<<"skriv et tall du vil gange trykk deretter enter så skriver du et nytt tall"<<std::endl;

int a;

int b;

int c;

int d;

std::cin >> a;

 

std::cin >> b;

c = a * b;

std::cerr;

system("Pause");

d = c;

std::cout << d;

system("Pause");

return 0;

}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...