Avatar billede monkeysee Nybegynder
01. oktober 2007 - 10:26 Der er 5 kommentarer og
1 løsning

Fejlbesked : using-declaration for non-member at class scope

Hej,

jeg får en fejlbesked i Dev C++ når jeg kompilerer min kode:
"using-declaration for non-member at class scope"

Jeg har googlet efter svar, så jeg viser lige den aktuelle del af koden (som normalt er årsagen til problemet). Koden er en splitter funktion til tekst-strenge...

module.cpp ----------------------------

#include <string>
#include <vector>

std::vector<std::string> explode (string inString,string separator)
{
    std::vector<std::string> returnVector;
    std::string::size_type start = 0;
    std::string::size_type end = 0;
    while ((end=inString.find (separator, start)) != std::string::npos)
    {
        returnVector.push_back (inString.substr (start, end-start));
        start = end+separator.size();
    }
    returnVector.push_back (inString.substr (start));
    return returnVector;
}

module.h ----------------------------

std::vector<std::string> explode (string inString,string separator);   
std::vector<std::string> array_data;

----------------------------
Håber jeg fik det vigtigste med ;-)
Avatar billede segmose Nybegynder
01. oktober 2007 - 11:20 #1
Har du prøvet at indsætte
#include <string>
#include <vector>
øverst i module.h også.
Avatar billede monkeysee Nybegynder
01. oktober 2007 - 17:19 #2
Det havde jeg da ikke -
den kommer et skridt videre, men jeg får en ny fejlbesked:
"expected `;' before '(' token"

(den peger på linien i module.h hvor explode funktionen er defineret)

Der er helt sikkert et eller andet som jeg har overset! Jeg har prøvet at lave et nyt projekt udelukkende med denne test kode, bare for at være sikker ...
Avatar billede mbulow Nybegynder
02. oktober 2007 - 05:49 #3
umiddelbart er der to ting jeg lægger mærke til i din kode...


1) Din source-fil inkluderer ikke header-filen:
Indsæt:
  #include "module.h"
under de andre include's i source-filen


2) Hvad er det for en string-type du bruger som parametre i din explode funktion? ;)
Skal det ikke være den som ligger i namespace std:
  std::vector<std::string> explode (std::string inString, std::string separator)


Sidder ikke i nærheden af en compiler, så kan desværre ikke afprøve mine idéer
Avatar billede segmose Nybegynder
02. oktober 2007 - 14:06 #4
I module.h
std::vector<std::string> explode (std::string inString,std::string separator); 
er en forward erklæring.

std::vector<std::string> array_data;
er en varialble erklæring og burde nok hedde
extern std::vector<std::string> array_data;
og have en erklæring i et modul f.ex. module.cpp
std::vector<std::string> array_data;
Avatar billede monkeysee Nybegynder
03. oktober 2007 - 07:37 #5
Jeres kommentarer har virket. Jeg har et fungerende script!!!
I kan begge få del i kagen, hvis I smider et svar :-)

Hvad angår "array_data", så var det en svipser fra min side. Den bliver ikke brugt nogetsteds i eksemplet, så undskyld herfra!
Avatar billede monkeysee Nybegynder
05. oktober 2007 - 12:48 #6
Lukker sprgsm. :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester