• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 250
  • Last Modified:

C++ newbie

Hi this is probably a silly question, but I'm new to c++
and the platform I'm developing on does not seem to support templates fully (maybe not beyond ANSI etc)

Can someone explain to me what this error means:

> ::operator new  may not be a template function:

when trying to compile:

template <class T>
inline
void*
operator new(size_t , T *t)
{
  return t;
}

Cheers

Andy
                         
0
Ghostrider
Asked:
Ghostrider
  • 4
  • 3
  • 2
  • +1
1 Solution
 
VEngineerCommented:
Which platform are you using?

Borland 4.5x, 5.0 will support fully.
MS Visual C++ 5 will support fully.
g++ will support fully.
0
 
nietodCommented:
It is saying that the function operator new cannot be defined inside a template.  That is you cannot use templates to define overloaded versions f operator new.  I can't image why that is.  Vissual C++ 5.0 does allow it.   Your code compiles and runs fun.
0
 
nietodCommented:
I didn't see Vengineer's stuff when I answered.  But possibly there is a way around this without changing compilers.  What are you hoping to do with this?  As it stands now it is not needed at all.
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
GhostriderAuthor Commented:
It's on the Tandem NSK platform using an ancient compiler, is there any way around this?
0
 
GhostriderAuthor Commented:
It's on the Tandem NSK platform using an ancient compiler, is there any way around this?
0
 
nietodCommented:
You missunderstood me.  I don't mean "there might be a way to make the compiler accept it".  That's not possible.  But I do mean that if you explain what you are trying to achieve, we might be able to come up with a different way to accomplish it that will work.   But O don't know what you are trying to do, so I can't help you come up with a solution.
0
 
alexoCommented:
Here's your answer.

A pointer to any type can be converted implicitly to a pointer to type void.  Therefore, the syntax of your placament new operator should be as follows:

    void* operator new(size_t , void* t)
    {
        return t;
    }

Tell me if it helps.
0
 
nietodCommented:
But placement new is defined in new.h (or no ,.h?)  I'm assuming Ghostrider is trying to do something else here.
0
 
alexoCommented:
The body of the function looks suspiciously like placement new...
0
 
alexoCommented:
Ghostrider, what solved your problem?
(You know, for future reference...)
0

Featured Post

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

  • 4
  • 3
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now