所以,我想出了我的编译器/链接器错误。现在,我只是在打印到控制台时遇到问题。以下代表一个简单的测试,旨在生成一个简单的矩阵,然后将其数据打印到控制台。 我想知道为什么不将数据打印到控制台..
我也一定要发布我的源文件:
#include "GLMatrix.h"
namespace Graphics {
GLMatrix::GLMatrix(int sizeX, int sizeY)
{
_sizeX = sizeX;
_sizeY = sizeY;
}
GLMatrix::~GLMatrix()
{
delete _pArray;
}
void GLMatrix::addColumnItem(int row, int column, long item) {
_pArray[row][column] = item;
}
void GLMatrix::allocMatrix() {
_pArray = new long*[_sizeX];
for (int i = 0; i < _sizeX; ++i) {
_pArray[i] = new long[_sizeY];
}
}
void GLMatrix::revertRowsByColumns() {
long** columns = new long*[_sizeY];
for (int col = 0; col < _sizeY; ++col) {
columns[col] = new long[_sizeX];
memmove(
columns + col,
_pArray[_sizeX - col],
sizeof(_sizeX) - sizeof(col)
);
}
}
}
主要
#include <SDL.h>
#include <iostream>
#include "GLMatrix.h"
int main(int argc, char* argv[]) {
//SDL_Init(SDL_INIT_EVERYTHING);
//matrix test
Graphics::GLMatrix* matrix = new Graphics::GLMatrix(3, 3);
matrix->allocMatrix();
int num_rows = matrix->getRowSize();
int num_columns = matrix->getColumnSize();
for (int row = 0; row < num_rows; ++row) {
for (int col = 0; col < num_columns; ++col) {
long i = static_cast<long>(col);
matrix->addColumnItem(row,col, i);
if ((row + 1) % 2 != 0) {
std::cout << i << " ";
} else {
std::cout << "\n";
}
}
}
//SDL_Quit();
delete matrix;
system("pause");
return 0;
}
我的某些控制台输出
'OpenGL_01.exe': Loaded 'ImageAtBase0x4a6e0000', Loading disabled by Include/Exclude setting.
'OpenGL_01.exe': Unloaded 'ImageAtBase0x4a6e0000'
The program '[3324] OpenGL_01.exe: Native' has exited with code 0 (0x0).
我还是比较新的语言。
更新
我将行和列变量的数组和getter的分配切换为类似于以下内容:
matrix->allocMatrix();
int num_rows = matrix->getRowSize();
int num_columns = matrix->getColumnSize();
不幸的是,我仍然遇到同样的错误。