Solved

what wrong with my program...

Posted on 2003-11-04
4
211 Views
Last Modified: 2010-04-02
I got a question is I not confirm my code. I use object – oriental and OpenGL concept to draw a triangle. I got a Position class which store 3 float variable (x, y, z). Then I use the Triangle class which contain of array of 3 Position which contain the coordinate of the 3 vertices of Triangle. I use Driver.cpp to test my program (main class to control everything). Following is my code to test the program:

//Driver.cpp
#include <windows.h>
#include "Globals.h"
#include "OpenGLScene.h"
#include "MyOpenGLScene.h"
int WINAPI WinMain(HINSTANCE      hInstance,            // Instance
                  HINSTANCE      hPrevInstance,            // Previous Instance
                  LPSTR lpCmdLine,                  // Command Line Parameters
                  int nCmdShow)                  // Window Show State
{
      // Position accept 3 variable(x, y, z)
      Position* p1 = new Position(0.0f, 1.0f, -6.0f);
      // Position accept 3 variable(x, y, z)
      Position* p2 = new Position(-1.0f, -1.0f, -6.0f);
            // Position accept 3 variable(x, y, z)
      Position* p3 = new Position(1.0f, -1.0f, -6.0f);
      
      // because 3 Position for draw a Triangle
      Position* p[] = {p1, p2, p3};
      
      // Trianlge to store array of Position
      Triangle* myTriangle = new Triangle(*p);
      
      // add Triangle
      myStage->addTriangle(myTriangle);
      
      //run the code
      OpenGLScene* myStage = new MyOpenGLScene("Stage 1",800,600,16,0);
      myStage->start();
      return 0;
}

when I test addTriangle function then got this kind of error:
error C2440: '=' : cannot convert from 'class Position *(__thiscall Triangle::*)(void)' to 'class Position *' There is no context in which this conversion is possible

error C2440: '=' : cannot convert from 'float (__thiscall Position::*)(void)' to 'float'
        There is no context in which this conversion is possible

error C2440: '=' : cannot convert from 'float (__thiscall Position::*)(void)' to 'float'
        There is no context in which this conversion is possible

error C2440: '=' : cannot convert from 'float (__thiscall Position::*)(void)' to 'float'
        There is no context in which this conversion is possible

I think my code are stupid and then I don’t know how to make it simple and fix the error. Can someone check for me. Thanks!

Following is my other code:
// Triangle.cpp file
#include "MyOpenGLScene.h"

int i=0;
Triangle *triangle[50];
 
MyOpenGLScene::MyOpenGLScene(char* title, int width, int height, int bits, bool fullscreenflag):OpenGLScene(title, width, height, bits, fullscreenflag) { }
void MyOpenGLScene::addTriangle(Triangle *T) {
 triangle[i] = aTriangle[1];
 i++;
}
 
void MyOpenGLScene::DrawTriangle(Triangle *T) {
 Position *vertex;
 float vx, vy, vz;
 glBegin(GL_TRIANGLES);
  for(int i=0; i<3; i++) {
   vertex = T->getVertices;
   vx = vertex->getX;
   vy = vertex->getY;
   vz = vertex->getZ;
   glColor3f(1.0f,1.0f,1.0f);
   glVertex3f(vx, vy, vz);
  }
 glEnd();
}
 
int MyOpenGLScene::DrawGLScene() {
 this->DrawTriangle(T);
 return 0;
}
 
// Triangle.cpp file
#include "Triangle.h"

Triangle::Triangle(Position position[3]):red(1.0), green(1.0), blue(1.0) {
 this->position[0] = position[0];
 this->position[1] = position[1];
 this->position[2] = position[2];
}
void Triangle::setColor(float red, float green, float blue) {
 this->red = red;
 this->green = green;
 this->blue = blue;
}
float Triangle::getRed() {
 return red;
}
float Triangle::getGreen() {
 return green;
}
float Triangle::getBlue() {
 return blue;
}
Position* Triangle::getVertices() {
 return position;
}
// Position.cpp file
Position::Position() { }
Position::Position(float x, float y, float z) {
 this->x = x;
 this->y = y;
 this->z = z;
}
float Position::getX() {
 return x;
}
float Position::getY() {
 return y;
}
float Position::getZ() {
 return z;
}
 
From: Sally
0
Comment
Question by:sally1980
4 Comments
 
LVL 9

Accepted Solution

by:
_ys_ earned 20 total points
ID: 9679161
Start with this:

>> Triangle* myTriangle = new Triangle(*p);
Triangle* myTriangle = new Triangle (p);  // no '*'
0
 
LVL 13

Expert Comment

by:SteH
ID: 9679607
You use at some places Position* and later you need only Position.
To get an instance of Position use
Position p1(1,1,-6);
Now p needs to be declared as
Position p[3] and then you can continue with the tip of _ys_.
0
 
LVL 9

Expert Comment

by:tinchos
ID: 10242504
No comment has been added lately, so it's time to clean up this TA.
I will leave the following recommendation for this question in the Cleanup topic area:

Accept: _ys_ {http:#9679161}

Please leave any comments here within the next seven days.
PLEASE DO NOT ACCEPT THIS COMMENT AS AN ANSWER!

Tinchos
EE Cleanup Volunteer
0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In days of old, returning something by value from a function in C++ was necessarily avoided because it would, invariably, involve one or even two copies of the object being created and potentially costly calls to a copy-constructor and destructor. A…
Often, when implementing a feature, you won't know how certain events should be handled at the point where they occur and you'd rather defer to the user of your function or class. For example, a XML parser will extract a tag from the source code, wh…
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.

809 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question