c++/2769: Compiler doesn't find existing copy constructor
jungdl@ornl.gov
jungdl@ornl.gov
Mon May 7 21:06:00 GMT 2001
>Number: 2769
>Category: c++
>Synopsis: Compiler doesn't find existing copy constructor
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: rejects-legal
>Submitter-Id: net
>Arrival-Date: Mon May 07 21:06:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: David Jung
>Release: g++ v3.0, daily snapshot 7th May 2001 from codesourcery.com
>Organization:
>Environment:
Standard i686 Redhat 6.2 install with snapshot installed (replacing default installed 2.96 develop snapshot shipped)
>Description:
Compiler appears to complain about a missing copy constructor that is actually defined.
Compiles fine on IRIX 6.5.x MIPSpro 7.3.1.1m compiler.
>How-To-Repeat:
==== Place in TriangleIterator.hpp ====
#ifndef _GFX_TRIANGLEITERATOR_HPP_
#define _GFX_TRIANGLEITERATOR_HPP_
#include <stdexcept>
typedef unsigned int Int;
class Triangle
{
public:
Triangle() {}
Triangle(const Triangle& t);
virtual ~Triangle() {}
};
class TriangleContainer;
class TriangleIterator
: public std::iterator<std::input_iterator_tag, Triangle, Int, const Triangle*, const Triangle&>
{
public:
explicit TriangleIterator(const TriangleIterator& iter);
virtual ~TriangleIterator();
TriangleIterator(const TriangleContainer& triangles, bool begin);
};
#endif
===== Place in TriangleContainer.hpp ===========
#ifndef _GFX_TRIANGLECONTAINER_HPP_
#define _GFX_TRIANGLECONTAINER_HPP_
class TriangleIterator;
class TriangleContainer
{
public:
typedef TriangleIterator const_iterator;
virtual const_iterator begin() const;
protected:
friend class TriangleIterator;
};
#endif
======== Place in TriangleContainer.cpp ===========
#include "TriangleContainer.hpp"
#include "TriangleIterator.hpp"
TriangleContainer::const_iterator TriangleContainer::begin() const
{
return TriangleIterator(*this, true);
}
====== Issue compile command: =========
g++ -c TriangleContainer.cpp -o TriangleContainer.o
TriangleContainer.cpp: In method `TriangleIterator
TriangleContainer::begin () const':
TriangleContainer.cpp:6: no matching function for call to
`TriangleIterator::TriangleIterator (TriangleIterator)'
>Fix:
none known
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the Gcc-bugs
mailing list