0

Just the salient details:

Compilation:

g++ -c memref_test.cpp
g++ -c -I/home/chap/private/WDI/git -I/home/chap/private/WDI/git/include -I/usr/local/mysql/include -I/usr/local/include   -I/home/chap/private/WDI/git -I/home/chap/private/WDI/git/include -I/usr/include/mysql -fno-strict-aliasing  -g -O0 --std=c++11  MemRef.cpp
g++ -o memref_test memref_test.o MemRef.o

Error:

MemRef.h:36:24: warning: inline function ‘bool operator<(const MemRef&, const MemRef&)’ used but never defined [enabled by default]

/usr/include/c++/4.7/bits/stl_algo.h:86: undefined reference to `operator<(MemRef const&, MemRef const&)'

MemRef.h:

class MemRef {
    public:
        friend inline bool operator< (const MemRef& lhs, const MemRef& rhs);
};

MemRef.cpp:

inline bool 
operator< (const MemRef& lhs, const MemRef& rhs){
    int minlen = 
        lhs._len <= rhs._len 
        ? lhs._len 
        : rhs._len;
    int res = memcmp(lhs._ptr, rhs._ptr, minlen);
    if (res < 0) return true;
    if (res > 0) return false;
    // equal for minlen, so he with the lesser length wins
    return (lhs._len < rhs._len);
}

memref_test.cpp:

deque<MemRef> memrefs;
const string record("Record 1\tABLE\tBAKER\tCHARLIE");
MemRef::split(memrefs, record, '\t');
std::sort(memrefs.begin(), memrefs.end());

I've racked my brain for six hours, googling and searching SO, and I need help. Thanks.

Chap
  • 3,649
  • 2
  • 46
  • 84
  • 1
    Remove the `inline` from the operator *and* friend decl or move the whole thing to your header file. – WhozCraig Nov 23 '13 at 22:46
  • 1
    I did a little searching for 'inline' http://stackoverflow.com/q/1759300/522385 and decided to just remove the keyword. Worked. – Chap Nov 24 '13 at 00:07

0 Answers0