C++: проблема с объявлением функции в классе

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Ru}{eeZ, 23 Feb 2011.

  1. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Sales_item_my.h:
    Code:
    #include <string>
    #include <iostream>
    using namespace std;
    
    class Sales_item_my
    {
    	public:
    		void plus();
    };
    
    Sales_item_my.cpp:
    Code:
    #include "Sales_item_my.h"
    #include <iostream>
    using namespace std;
    
    void plus()
    {
    	cout << 5 << endl;
    }
    
    x.9.cpp:
    Code:
    #include <iostream>
    #include <vector>
    #include <string>
    #include <bitset>
    #include <cstring>
    #include <cstdio>
    #include <stdexcept>
    #include <cassert>
    #include "Sales_item_my.h"
    using namespace std;
    
    int main(int argc, char *argv[])
    {
    	Sales_item_my cl_obj;
    
    	cl_obj.plus();
    
    	return 0;
    }
    
    Выдает:
    Code:
    whitezoron@whitezoron-P5QC:~$ g++ '/home/whitezoron/Рабочий стол/Proging/Стэнли Липман/x.9.cpp'
    /tmp/ccY1Qpwa.o: In function `main':
    x.9.cpp:(.text+0x2b): undefined reference to `Sales_item_my::plus() const'
    collect2: ld returned 1 exit status
    whitezoron@whitezoron-P5QC:~$ 
    
    В чём дело?
     
  2. p4crew

    p4crew New Member

    Joined:
    29 Jan 2011
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    HTML:
    #include <string> #include <iostream> using namespace std; class Sales_item_my { public: void plus(); };
    на
    HTML:
    [#include <string> #include <iostream> using namespace std; class Sales_item_my { public: main void plus(); };
     
  3. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Что за "main"?
    Выдаёт:
    Code:
    whitezoron@whitezoron-P5QC:~$ g++ '/home/whitezoron/Рабочий стол/Proging/Стэнли Липман/x.9.cpp'
    In file included from /home/whitezoron/Рабочий стол/Proging/Стэнли Липман/x.9.cpp:9:
    /home/whitezoron/Рабочий стол/Proging/Стэнли Липман/Sales_item_my.h:18: error: ISO C++ forbids declaration of ‘main’ with no type
    /home/whitezoron/Рабочий стол/Proging/Стэнли Липман/Sales_item_my.h:18: error: expected ‘;’ before ‘void’
    /home/whitezoron/Рабочий стол/Proging/Стэнли Липман/x.9.cpp: In function ‘int main(int, char**)’:
    /home/whitezoron/Рабочий стол/Proging/Стэнли Липман/x.9.cpp:23: error: ‘class Sales_item_my’ has no member named ‘plus’
    whitezoron@whitezoron-P5QC:~$ 
    
    Code:
    public:
    		main void plus();
    
     
  4. Ins3t

    Ins3t Харьковчанин

    Joined:
    18 Jul 2009
    Messages:
    939
    Likes Received:
    429
    Reputations:
    139
    гм...
    Code:
    #ifndef _HEADER_
    #define _HEADER_
    
    #include <string>
    #include <iostream>
    
    class Sales_item_my {
    public:
    	void plus();
    };
    
    #endif /*_HEADER_*/
    Code:
    #include "Sales_item_my.h"
    #include <iostream>
    
    void Sales_item_my::plus() {
    	std::cout << 5 << std::endl;
    }
    Code:
    #include <iostream>
    #include <vector>
    #include <string>
    #include <bitset>
    #include <cstring>
    #include <cstdio>
    #include <stdexcept>
    #include <cassert>
    #include "Sales_item_my.h"
    
    
    int main(int argc, char *argv[]) {
    	Sales_item_my cl_obj;
    
    	cl_obj.plus();
    
    	return 0;
    }
     
    1 person likes this.
  5. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Забыл указать пространство класса в функции. Взял твой код - все равно выдаёт ту же ошибку.