如果我想要一个指向 int 向量向量中的元素的指针,我会写:
vector<vector<int>> a (5);
int* p1 = a[4].data();
Run Code Online (Sandbox Code Playgroud)
但是,当我编写以下内容时,它不适用于 bool 向量的向量(为什么?):
vector<vector<bool>> b(5);
bool* p2 = b[4].data();
Run Code Online (Sandbox Code Playgroud)
编译器输出以下错误消息:
Semantic issue: Error: Cannot initialize a variable of type "bool*" with an rvalue of type "void".
Run Code Online (Sandbox Code Playgroud) 我在编译时遇到问题:Multiple definitions of "myFunction()"
我将在这里大大简化问题。基本上,我有 3 个文件:“main”、“header”和“myLibrary”。
#include "header.hpp"
int main() { }
Run Code Online (Sandbox Code Playgroud)
#ifndef HEADER_HPP
#define HEADER_HPP
#include "myLibrary.hpp"
// ...
#endif
Run Code Online (Sandbox Code Playgroud)
#include "header.hpp"
// ...
Run Code Online (Sandbox Code Playgroud)
#ifndef LIB_HPP
#define LIB_HPP
#if defined(__unix__)
#include <dlfcn.h>
std::string myFunction() { return std::string(); }
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
#include "myLibrary.hpp"
//...
Run Code Online (Sandbox Code Playgroud)
那么,为什么编译器说我有呢 Multiple definitions of "myFunction()"?
我发现的一条线索:当我获取 header.cpp 并删除显示 的行时#include "header.hpp",程序编译时没有任何抱怨。另一方面,如果我删除myFunction(从 myLibrary.hpp 中),程序也可以毫无抱怨地编译
我一直在思考和搜索这个,但我无法解决这个问题.我想要一个对象,当复制到另一个对象时,两个对象共享某个成员变量.因此,当我更改object1的成员变量的值时,它也会更改object2中的变量.例:
class ABC {
public:
int a = 5;
//...
}
int main() {
ABC object1;
ABC object2 = object1;
object2.a = 7; // now, object1.a is equal to 7
object1.a = 10; // now, object2.a is equal to 10
}
Run Code Online (Sandbox Code Playgroud)
我知道复制构造函数,但我不确定它是否适用于此处或者有更好的方法.我一直在考虑使用指针或引用,但不能成功.请注意,我不希望所有对象共享同一个变量.
我试图在我的着色器中实现一种从法线贴图读取法线的方法。然而,我在读取颜色时发现了一个问题,阻止了它。
我认为诸如 (0, 0, 255)(蓝色)这样的一种颜色相当于着色器中的 (0, 0, 1)。然而,最近我发现,例如,如果我传递颜色为 (128, 128, 255) 的纹理,它并不等于着色器中的 ~(0.5, 0.5, 1)。
在片段着色器中,我编写以下代码:
vec3 col = texture(texSampler[0], vec2(1, 1)).rgb; // texture with color (128, 128, 255)
if(inFragPos.x > 0)
outColor = vec4(0.5, 0.5, 1, 1); // I get (188, 188, 255)
else
outColor = vec4(col, 1); // I get (128, 128, 255)
Run Code Online (Sandbox Code Playgroud)
在 x<0 中,我得到颜色 (128, 128, 255),这是预期的。但在 x>0 中我得到了颜色 (188, 188, 255),这是我没想到的。我希望两种颜色是相同的。我不知道什么?我缺少什么?